02 RDB 与 AOF 持久化

RDB 与 AOF 持久化

RDB 保存某个时刻的数据快照,AOF 保存可重放的写入效果;写入文件与 fsync 到稳定介质是两回事。
版本:Redis Open Source 8.10.3;核实日期:2026-11-12。官方在线文档可能继续更新,源码链接固定到对应发布标签。图为原理抽象,省略非本页重点。
specification { element actor { style { shape person; color amber } } element system { style { color muted } } element component { style { color primary } } element storage { style { shape storage; color green } } } model { main = component '主进程' mem = storage '内存数据' child = component 'RDB / AOF 重写子进程' aof = storage 'AOF 增量文件' bio = component '后台 fsync' disk = storage '快照 / 基础文件' } views { dynamic view index { title '核心链路' variant sequence main -> mem '执行并修改数据' opt '启用 AOF,示例 everysec' { main -> aof '追加传播后的写入' main -> bio '按策略调度 fsync' bio -> aof '将文件刷新到稳定介质' } opt '触发 BGSAVE 或 AOF 重写' { main -> child 'fork 子进程' child -> mem '读取 fork 时的逻辑快照' child -> disk '生成 RDB 或 AOF 基础文件' child -> main '报告完成并切换有效文件集合' } } }

关键判断

  • 图中把两类后台任务并列展示,并非每次写入都 fork;RDB 子进程借助写时复制获得快照,fork 与脏页复制仍有成本。
  • 多段 AOF 由基础文件、增量文件及 manifest 管理;重写压缩历史,不会让当前新写入停止进入日志。
  • appendfsync 的 always、everysec、no 决定不同耐久与延迟取舍;不能把收到 OK 一概等同于已落盘。

边界

不把 RDB 当作逐次提交日志;快照间隔、AOF 策略、磁盘故障及恢复路径共同决定数据丢失窗口。

官方出处与源码

回到首页 · 上一篇 · 下一篇