
图片来源: https://bytebytego.com
一、AOF(Append-Only File)
特点:写后日志(Write-after log),记录执行过的命令而不是数据本身
工作原理:
- Redis 先在内存中执行命令修改数据
- 然后将命令写入 AOF 文件
优势:
- 基于事件的设计,数据恢复简单
- 不阻塞当前写操作,性能高
注意:AOF 是命令日志,恢复时需要重放日志,日志大时恢复较慢
二、RDB(Redis Database)
特点:数据快照,在特定时间点记录整个数据集
工作原理:
- 主线程 fork 出
bgsave子进程,共享内存数据 bgsave读取数据并写入 RDB 文件- 主线程修改数据时,创建数据副本(Copy-on-write)
- 主线程对副本操作,
bgsave继续写入 RDB 文件
- 主线程 fork 出
优势:
- 数据恢复快速,只需加载快照即可
限制:
- 快照频率低时可能丢失最近修改的数据
三、混合策略(Mixed Approach)
生产环境常用策略:
- 使用 RDB 定时生成数据快照
- 使用 AOF 记录快照之后的命令
优势:
- 结合 RDB 快速恢复和 AOF 高可靠性,兼顾性能与安全