Redis持久化机制
AI生成声明: 本文档由AI辅助生成,旨在提供Redis持久化机制的完整指南。
Redis提供了两种持久化方式:RDB和AOF,理解它们的原理和选择对于保证数据安全至关重要。
核心问题
RDB(Redis Database)
原理:
- 在指定时间间隔内生成数据快照
- 将内存中的数据写入磁盘
- 生成.rdb文件
优点:
- 文件紧凑,适合备份
- 恢复速度快
- 对性能影响小
缺点:
- 可能丢失最后一次快照后的数据
- 数据量大时fork过程耗时
配置:
conf
save 900 1 # 900秒内至少1个key变化
save 300 10 # 300秒内至少10个key变化
save 60 10000 # 60秒内至少10000个key变化AOF(Append Only File)
原理:
- 记录每个写操作
- 追加到文件末尾
- 重启时重新执行命令
优点:
- 数据丢失少
- 可读性强
- 支持重写压缩
缺点:
- 文件体积大
- 恢复速度慢
- 对性能有一定影响
配置:
conf
appendonly yes
appendfsync everysec # always/everysec/noAOF重写
目的:
- 压缩AOF文件
- 去除冗余命令
- 提高恢复速度
触发条件:
- 手动:BGREWRITEAOF
- 自动:auto-aof-rewrite-percentage
持久化策略选择
1. 仅RDB
- 适合数据不敏感场景
- 追求高性能
- 可接受数据丢失
2. 仅AOF
- 数据安全性要求高
- 可接受性能损失
- 需要精确恢复
3. RDB + AOF
- 推荐方案
- RDB做定期备份
- AOF保证数据安全
- 兼顾性能和安全性
常见面试题
RDB和AOF的区别?
- RDB:快照,文件小,恢复快
- AOF:日志,文件大,恢复慢
- 数据安全性:AOF > RDB
如何选择持久化方式?
- 数据敏感:AOF或混合
- 性能优先:RDB
- 平衡方案:RDB + AOF
AOF重写的原理?
- 创建子进程
- 读取当前数据快照
- 生成新的AOF文件
- 替换旧文件