Fork me on GitHub

Redis 持久化:RDB 与 AOF 到底该怎么选

Redis 持久化:RDB 与 AOF 到底该怎么选

标签:Redis 持久化 RDB AOF 数据安全

一、先分清两种机制

机制 本质 说人话
RDB 定时快照 每隔一段时间给内存拍张"照片"存盘
AOF 实时记录 每来一条写命令,就往日志里追加一笔

一句话:RDB 存的是"结果",AOF 存的是"过程"。


二、五个维度的核心差异

维度 RDB AOF
更新频率 定时(如每 5 分钟一次) 实时(每次写都追加)
数据丢失量 两次快照间的数据会丢 最多丢最后 1 秒(刷盘默认每秒)
文件体积 小(紧凑二进制) 大(命令日志,随时间膨胀)
恢复速度 快(直接加载) 慢(逐条重放命令)
性能开销 快照瞬间 fork 有短暂阻塞 持续写盘,略占 I/O

为什么会这样? 根源就四个字——频率不同

  • RDB 是"定时拍片",两次快照之间改动没落盘,所以丢得多;但文件就是那一刻的内存快照,小而快
  • AOF 是"笔笔记账",几乎每条写都落盘,所以丢得少;但也因此文件大、恢复慢,还要靠 rewrite 定期压缩。

三、选型逻辑

场景 推荐 理由
缓存可重算、丢了不怕 RDB 快、省空间,代价是少量丢失
数据必须尽量不丢 AOF 丢得少,还能用 redis-check-aof 修复损坏
生产环境(两者都要) RDB + AOF RDB 快恢复 + AOF 高安全,互补

实践中最常见的做法是混合开启:用 AOF 保安全,用 RDB 保恢复速度。


四、总结

  • 要速度、能容忍丢数据 → RDB
  • 要安全、能容忍恢复慢 → AOF
  • 生产默认 → 两者都开

持久化没有绝对的好坏,只有"丢多少你能接受"和"恢复多慢你能忍"之间的权衡。

posted @ 2026-09-02 22:26  秋夜雨巷  阅读(9)  评论(0)    收藏  举报