Redis 提供两种核心持久化机制:RDB(Redis Database)快照和AOF(Append Only File)追加日志。
一、RDB(Redis Database)配置
特性:定时生成内存快照(二进制压缩文件),适合备份和灾难恢复
# redis.conf 核心配置项
# 自动触发条件(满足任意一条即触发)
save 900 1 # 15分钟内至少1次修改
save 300 10 # 5分钟内至少10次修改
save 60 10000 # 1分钟内至少10000次修改
stop-writes-on-bgsave-error yes # 持久化失败时停止写入
rdbcompression yes # 启用LZF压缩
rdbchecksum yes # 校验和验证
dbfilename dump.rdb # 文件名
dir ./ # 存储路径
二、AOF(Append Only File)配置
特性:记录所有写操作命令,提供更高数据安全性
# redis.conf 核心配置项
appendonly yes # 启用AOF
appendfilename "appendonly.aof" # 文件名
# 同步策略(三选一)
appendfsync always # 每个写操作同步(最安全,性能最低)
appendfsync everysec # 每秒同步(推荐平衡方案)
appendfsync no # 由操作系统决定(性能最高,风险最大)
auto-aof-rewrite-percentage 100 # AOF文件增长超过100%时触发重写
auto-aof-rewrite-min-size 64mb # 最小重写文件大小
aof-load-truncated yes # 加载截断的AOF文件时继续
三、混合持久化(Redis 4.0+)
特性:结合RDB和AOF优势,重写时生成RDB格式头部+AOF增量数据
aof-use-rdb-preamble yes # 启用混合模式
四、场景化配置建议
1. 数据安全优先方案
save "" # 禁用RDB
appendonly yes
appendfsync always # 最高安全级别
2. 性能优先方案
save 900 1 # 低频RDB
appendonly yes
appendfsync everysec # 折中同步策略
3. 灾难恢复优化方案
save 300 100 # 5分钟级RDB
appendonly yes
appendfsync everysec
dir /mnt/redis_backup/ # 单独存储到持久化卷
五、操作指南
-
动态修改配置(无需重启):
CONFIG SET appendonly yes CONFIG REWRITE # 持久化到配置文件
-
手动触发持久化:
SAVE # 阻塞式保存(生产环境慎用) BGSAVE # 后台异步保存 BGREWRITEAOF # 重写AOF文件
-
恢复数据:
# 关闭Redis后,将备份文件放入配置的dir目录 cp dump.rdb /var/lib/redis/6379/ # 启动时会自动加载
六、注意事项
-
内存消耗:AOF文件通常比RDB大2-5倍,确保有足够磁盘空间
-
性能监控:
INFO Persistence # 查看持久化状态 INFO Stats # 监控每秒写入量
-
版本兼容性:Redis 4.0+ 的混合持久化文件无法被旧版本读取
-
大内存实例:超过32GB内存的实例建议优先使用RDB
持久化选项的总结
RDB 优点:
更快的持久化过程,因为它只需要定期执行。
生成的快照文件是紧凑的二进制文件,适合备份和复制。
RDB 缺点:
如果服务器故障,可能会丢失最后一次快照之后的数据。
AOF 优点:
提供更高的数据安全性,因为它记录了每个写操作。
可以配置不同的同步策略来平衡安全性和性能。
AOF 缺点:
AOF 文件通常比 RDB 文件大,因为它是文本格式的命令日志。
持久化过程可能比 RDB 慢,尤其是当使用 always 同步策略时。
七、验证配置
- 检查文件生成:
ls -lh /path/to/redis/dir/*.rdb *.aof
- 查看日志:
tail -f /var/log/redis/redis.log | grep 'Background saving'
- 使用
redis-check-aof
和redis-check-rdb
工具验证文件完整性
根据您的具体场景需求(数据安全等级、性能要求、恢复时间目标等),可以灵活组合这些配置选项。需要更具体的建议时,请提供您的使用场景和Redis版本信息。