持久化
Redis 数据在内存中,重启会丢失。持久化把数据落盘,用于重启恢复与灾难备份。Redis 提供 RDB 与 AOF 两种方式,可单独或组合使用。
RDB:快照
RDB 把某一时刻的全量数据二进制快照写入磁盘(dump.rdb)。
AOF:追加日志
AOF 以文本协议记录每条写命令,重启时重放恢复。
AOF 重写(rewrite):随着时间推移 AOF 会膨胀,Redis 通过重写生成「等价但最小」的命令集。
混合持久化(推荐)
Redis 4.0+ 支持「RDB + AOF」混合:AOF 重写时以 RDB 格式保存基础快照,后续增量用 AOF 追加,兼顾恢复速度与低丢失。
选择建议
Warning
持久化不能替代备份与复制。RDB/AOF 文件损坏、误删、磁盘故障都会导致数据丢失。生产应结合:主从复制 + 定期备份 + 异地容灾,并实际演练恢复流程。
fork 与内存
BGSAVE 与 BGREWRITEAOF 都依赖 fork。Linux 的写时复制(COW)意味着 fork 后若写操作频繁,内存占用可能接近翻倍。
Tip
单实例内存建议不超过物理内存的一半,给 fork 的 COW 留足空间。若实例很大,可考虑降低 save 频率、使用 aof-use-rdb-preamble,或拆分多个实例。
小结
- RDB 是紧凑快照、恢复快;AOF 记录写命令、丢失窗口小。
- 生产推荐 混合持久化(
aof-use-rdb-preamble yes+appendfsync everysec)。 - 持久化不等于备份,须配合复制与定期备份。
- 关注 fork 带来的内存翻倍风险。