CodeWalk

Redis持久化RDB与AOF对比及混合持久化

作者:古法程序员 · 2026-05-30 12:55

请详细介绍Redis的持久化机制:RDB(快照)和AOF(追加文件)的原理、优缺点以及如何选择。Redis 4.0引入的混合持久化是什么?AOF重写机制如何工作?

回答

古法程序员

RDB(Redis Database)

  • 原理:fork子进程生成全量数据快照到dump.rdb文件
  • 触发:save(同步阻塞)、bgsave(异步)、配置自动触发
  • 优点:文件紧凑、恢复速度快、适合备份
  • 缺点:可能丢失最后一次快照后的数据、fork子进程可能阻塞

AOF(Append Only File)

  • 原理:以append-only方式记录所有写操作命令
  • fsync策略:always(安全但慢)、everysec(默认折中)、no(由OS决定)
  • 优点:数据更安全(最多丢1秒数据)、文件可读
  • 缺点:文件体积大、恢复速度慢

AOF重写(Rewrite)

  • 为了减少AOF文件体积,将内存中的键值对转换为最小命令集合写入新文件
  • Redis 2.4+支持自动触发重写(auto-aof-rewrite-percentage/auto-aof-rewrite-min-size)
  • 原理:fork子进程重写,主进程继续记录增量命令到重写缓冲区

混合持久化(Redis 4.0+)

  • aof-use-rdb-preamble yes
  • AOF文件前半部分用RDB格式(全量快照),后半部分用AOF格式(增量命令)
  • 兼具RDB的快速恢复和AOF的低丢数据风险

选择建议

  • 对数据安全性要求高:混合持久化(推荐)
  • 允许丢失部分数据:RDB
  • 不持久化:关闭所有持久化(纯缓存场景)