Skip to content

一句话先讲结论
RDB 做“快速备份 + 快速恢复”,AOF 做“实时防丢 + 可读日志”;两者混合 = 既快又稳,鱼和熊掌兼得。


1️⃣ 各自优势对比

维度RDB (快照)AOF (追加日志)
数据丢失量生成快照那一瞬间之后的数据会丢默认 1 秒最多丢 1 条
文件体积二进制压缩,体积小文本累积,体积大
恢复速度直接 mmap 载入,秒级逐条重放命令,分钟级
磁盘 I/O一次性写盘,I/O 峰值大每秒追加写,I/O 平滑
可读性二进制不可读纯文本可审计
生成耗时fork 子进程,可能阻塞追加几乎无阻塞

2️⃣ 为什么要“混合” (RDB-AOF mixed)
Redis 4.0 引入 RDB-AOF mixed mode,把两者的优点缝在一起:

  1. AOF 文件头部放一份 RDB 快照 → 重启时先秒级恢复 RDB 部分,再重放 RDB 之后的增量 AOF 命令。
  2. 尾部继续以 AOF 追加 → 保证实时性。
  3. 重写时生成新的 RDB + 新的增量 AOF → 既缩小 AOF 体积,又保持“秒级恢复 + 秒级防丢”。

3️⃣ 实战配置 & 效果

# redis.conf
save 900 1          # RDB 900 秒内 1 次修改就快照
appendonly yes      # 打开 AOF
aof-use-rdb-preamble yes  # 开启混合模式
appendfsync everysec      # 每秒刷盘,丢最多 1 秒

效果数据(4 GB 内存实例)
• 纯 AOF 恢复:~8 分钟
• 纯 RDB 恢复:~30 秒,但可能丢 5 分钟数据
• 混合模式:~40 秒恢复,仅丢 1 秒数据,文件体积比纯 AOF 小 60%


4️⃣ 面试一句话背诵
“RDB 快照恢复快、体积小,AOF 日志实时性强,混合模式把 RDB 做头、AOF 做尾,重启先秒级加载快照再重放增量,既快又稳。”