Redis 的持久化机制有哪些?它们的原理和区别是什么?
1. RDB(Redis Database)持久化
原理:定时生成内存快照(snapshot)
触发方式:
- 手动执行
SAVE
/BGSAVE
命令 - 配置文件中设置保存规则(如
save 900 1
) - 关闭服务时自动执行
# 配置文件示例 |
优点:
- 紧凑的二进制文件(适合备份)
- 快速恢复大数据集
- 性能影响小(子进程处理)
缺点:
- 可能丢失最后几分钟数据
- 大数据量时保存较慢
2. AOF(Append Only File)持久化
原理:记录所有写操作命令(类似日志)
同步策略:
always
:每次写入都同步(最安全)everysec
:每秒同步(默认推荐)no
:由操作系统决定
# 配置文件示例 |
优点:
- 数据安全性更高(最多丢失1秒数据)
- 可读的日志文件(便于分析)
- 后台重写机制优化文件大小
缺点:
- 文件体积通常比RDB大
- 恢复速度较慢
- 对性能影响稍大
3. RDB vs AOF 对比
特性 | RDB | AOF |
---|---|---|
数据安全性 | 可能丢失分钟级数据 | 最多丢失1秒数据 |
文件大小 | 紧凑(二进制格式) | 较大(文本命令记录) |
恢复速度 | 较快 | 较慢 |
性能影响 | 保存时影响较大 | 持续写入影响较小 |
可读性 | 不可读 | 可读(操作命令记录) |
4. 混合持久化(Redis 4.0+)
原理:结合RDB和AOF优势,AOF文件包含:
- RDB格式的数据头
- 增量AOF命令
# 启用混合持久化 |
恢复流程:
- 先加载RDB部分数据
- 再重放后续AOF命令
评论