首页/数据/备份与容灾速查/Redis 持久化配置 RDB 与 AOF
数据库与云备份56 条

Redis 持久化配置 RDB 与 AOF

两种持久化机制:RDB 按条件生成时间点快照、恢复快体积小;AOF 追加记录写命令、丢数窗口更小;生产常同时开启。

备份与容灾速查数据更新于 2026-10-13

Redis 持久化是什么

Redis 提供两种持久化机制:RDB 按条件生成时间点快照,文件紧凑、恢复快;AOF 追加记录写命令,丢数窗口更小但文件更大、恢复更慢。两者可以同时开启,同时存在时启动会优先加载 AOF。生产环境通常同时启用,用 RDB 做快速恢复、用 AOF 兜住丢失窗口。

基本信息

RDB 触发按 save 规则自动触发,也可手动执行保存命令
AOF 刷盘appendfsync 可取 always、everysec、no
加载优先级同时存在时优先加载 AOF
重写机制AOF 体积膨胀后由重写生成精简版本
适用缓存与队列类数据,衡量重建成本后再决定持久化强度

redis.conf 关键配置

redis.conf 关键配置
# RDB:900 秒 1 次修改,300 秒 10 次,60 秒 1 万次触发
save 900 1
save 300 10
save 60 10000

# AOF
appendonly yes
appendfsync everysec

RDB 与 AOF 对比

维度RDBAOF
内容紧凑二进制快照追加写命令日志
恢复速度快慢,需要逐条重放
丢失窗口取决于快照间隔everysec 约 1 秒
体积与 IO体积小,写盘集中体积大,持续追写

运维要点

  • 把 RDB 与 AOF 文件复制到独立存储:只留在本机会随实例磁盘一起失效
  • 理解 fork 开销:生成快照需要复制页表,大内存实例会产生可观测的延迟抖动
  • 监控重写与保存失败:写盘失败通常源于磁盘空间不足或权限问题
  • 主从与持久化分开考虑:复制提高可用性,持久化保证重启不丢数据
  • 评估重建成本:纯缓存数据可从源头重建时,可适当放宽持久化强度
误认为开了 AOF 就不丢数据:everysec 仍有约 1 秒窗口,操作系统层面的缓冲丢失影响更大;对账类数据不能只依赖 Redis 持久化。
appendfsync always 数据更稳但写性能明显下降;everysec 是延迟与安全的常见折中,也需要接受秒级的丢失窗口。

常见排查场景

  • 重启后数据回到很早的状态:检查是否只有 RDB 生效,AOF 是否因损坏被拒绝加载
  • 快照生成时出现明显延迟:与 fork 开销、内存规模与写时复制压力相关
  • 日志中出现保存失败告警:多数由磁盘空间不足或目录权限变化引起
  • 恢复耗时远超预期:AOF 体积过大时需要先重写再恢复,而不是直接加载

易错点

  • 误认为开了 AOF 就不丢数据:everysec 仍有约 1 秒窗口,系统层缓冲丢失影响更大
  • AOF 存在时启动优先加载 AOF,仅更新 RDB 会造成恢复到旧数据的困惑
  • 快照文件与实例数据同盘,磁盘故障时两者一起丢失
  • 磁盘写满导致后台保存失败,日志之外没有任何告警,重启后数据回到很早的快照

数据来源与参考

  • Redis 官方文档(Persistence)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌