Redis提供三种持久化方案,各有侧重:RDB(快照)、AOF(命令日志)、混合持久化(RDB+AOF)。选择需结合数据重要性、恢复时间要求、性能容忍度等因素综合判断。
| 维度 | RDB | AOF | 混合持久化 |
|---|---|---|---|
| 数据可靠性 | 低(可能丢失最后一次快照后数据) | 高(可配置秒级丢失,如everysec) | 中高(RDB保证基础备份,AOF补充增量) |
| 恢复速度 | 极快(二进制文件直接加载) | 较慢(需重放命令) | 快(RDB快速加载+增量AOF) |
| 文件大小 | 小(仅快照数据) | 大(含所有写命令) | 中等(RDB开头+AOF增量) |
| 性能影响 | 低(后台异步生成) | 中(取决于sync策略,everysec影响小) | 中(平衡RDB与AOF的开销) |
| 可读性 | 低(二进制文件) | 高(文本命令,易修复) | 中(RDB部分不可读,AOF部分可读) |
若Redis主要用于缓存热点数据(如电商商品详情、社交动态),数据丢失可通过后端数据库重新加载,优先选择RDB。
save 900 1,15分钟至少1次修改),或手动触发BGSAVE定期备份。若Redis存储关键业务数据(如金融交易流水、分布式锁状态、用户会话),需优先保证数据完整性,推荐AOF(everysec)。
everysec模式平衡了安全与性能,最多丢失1秒数据;AOF文件可读性强,便于人工修复(如误删命令)。always模式,但需承受较高性能损耗(每秒同步磁盘)。多数业务既需要一定数据可靠性,又不愿牺牲太多性能,**混合持久化(RDB+AOF)**是最佳选择(Redis 4.0+支持)。
redis.conf中设置aof-use-rdb-preamble yes,同时开启AOF(appendonly yes)。若需长期保存数据(如每日归档、异地容灾),RDB是理想选择。
save指令与定时任务(如crontab),生成带日期戳的RDB文件(如dump-20251020.rdb)。save间隔或改用混合持久化;aof-use-rdb-preamble no)。通过以上策略选择,可根据业务需求在数据可靠性、性能、恢复速度之间取得平衡,确保Redis持久化满足实际场景要求。