持久化(RDB/AOF)
Redis 的两种主要持久化方式与加载顺序、关键参数与实践。
RDB(快照)
- 周期性将内存数据写入压缩的快照文件(
dump.rdb
)。 - 触发方式:
save
配置、BGSAVE
命令、关机时保存。 - 优点:文件紧凑、恢复快;缺点:可能丢失最近一次快照后的写入。
示例配置:
save 900 1
save 300 10
save 60 10000
rdbcompression yes
stop-writes-on-bgsave-error yes
AOF(只追加文件)
- 将每次写命令追加到 AOF,支持
appendfsync
策略:always
/everysec
/no
。 - AOF 重写:压缩历史(生成新 AOF),不影响服务。
- 优点:更高持久性;缺点:文件大、恢复较慢。
示例配置:
appendonly yes
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-use-rdb-preamble yes
加载顺序
- AOF 开启且存在 AOF 文件:优先加载 AOF。
- 否则加载 RDB。
- 文件损坏:需修复(如
redis-check-aof --fix
)或回退。
实践建议
- 生产常用 AOF everysec + RDB 组合;重启更安全,文件大小可控。
- 高写入峰值时关注 AOF fsync 带来的延迟波动;必要时隔离磁盘或调优。