RDB 与 AOF 持久化
约 578 字大约 2 分钟
布欧-Lewyon
2026-05-15
Redis 数据在内存中,如果服务器宕机则数据丢失。持久化将数据写入磁盘。
RDB(快照)
# redis.conf
save 900 1 # 900 秒内 ≥1 次修改 → 保存
save 300 10 # 300 秒内 ≥10 次修改 → 保存
save 60 10000 # 60 秒内 ≥10000 次修改 → 保存
dbfilename dump.rdb
dir /var/lib/redis# 手动触发
SAVE # 同步阻塞(不推荐生产)
BGSAVE # 异步 fork 子进程(推荐)
# 恢复:将 dump.rdb 放在配置的 dir 下,重启自动加载| 优点 | 缺点 |
|---|---|
| 文件紧凑、适合备份 | 可能丢失两次 save 之间的数据 |
| 加载速度快 | fork 可能阻塞(大实例) |
AOF(日志)
appendonly yes # 开启 AOF
appendfilename "appendonly.aof"
appendfsync everysec # fsync 策略
auto-aof-rewrite-percentage 100 # 日志增长 100% 时重写
auto-aof-rewrite-min-size 64mb # 最小 64MB 才重写# 三种 fsync 策略
appendfsync always # 每次写都刷盘(最安全,最慢)
appendfsync everysec # 每秒刷盘(推荐折中)
appendfsync no # 由系统刷盘(最快,丢数据最多)
# 手动重写 AOF
BGREWRITEAOF| 策略 | 丢数据 | 性能 |
|---|---|---|
always | 最多 1 次写操作 | 慢 |
everysec | 最多 1 秒 | 推荐 |
no | 不确定 | 快 |
混合持久化(Redis 4.0+)
aof-use-rdb-preamble yes # AOF 文件头用 RDB 格式混合模式下 AOF 文件结构:
[RDB 数据快照] [增量 AOF 日志]| 对比 | 加载速度 | 数据安全 | 文件大小 |
|---|---|---|---|
| RDB | 最快 | 最差 | 最小 |
| AOF | 慢 | 最好 | 最大 |
| 混合 | 较快 | 较好 | 中等 |
备份策略
# 1. 每小时 BGSAVE 一次,保存到远程
redis-cli BGSAVE
cp /var/lib/redis/dump.rdb /backup/redis/hourly/dump-$(date +%Y%m%d%H).rdb
# 2. 开启 AOF everysec
# 3. 使用混合持久化
# 检查文件
redis-check-rdb /var/lib/redis/dump.rdb
redis-check-aof /var/lib/redis/appendonly.aof小结
| 持久化 | 配置 | 适用场景 |
|---|---|---|
| RDB | save 60 10000 | 兼容性、大规模恢复 |
| AOF | appendfsync everysec | 数据安全优先 |
| 混合 | aof-use-rdb-preamble yes | 推荐,兼顾加载速度和数据安全 |
- 生产环境开启 AOF + RDB 混合模式。
appendfsync everysec是安全与性能的最佳平衡。- AOF 文件会不断增长,
BGREWRITEAOF定期重写。 - RDB 适合定时备份到远程存储。
上一节:Bitmap 与 HyperLogLog 下一节:事务与 Lua 脚本
