Redis 持久化 RDB / AOF
TIP
Redis 是内存数据库,持久化机制保证数据不因重启而丢失。RDB 和 AOF 是两种主要的持久化方式。
RDB(快照)
在指定时间间隔将内存数据生成快照保存到磁盘。
优点
- 文件紧凑,适合备份和灾难恢复
- 恢复速度快(直接加载到内存)
- 主从复制默认使用 RDB
配置
bash
# redis.conf
save 900 1 # 900秒内至少1次修改
save 300 10 # 300秒内至少10次修改
save 60 10000 # 60秒内至少10000次修改
dbfilename dump.rdb
dir /data/redis手动触发
bash
SAVE # 同步阻塞,不推荐
BGSAVE # 异步后台保存(推荐)AOF(追加文件)
记录每次写操作命令,重启时重新执行。
配置
bash
appendonly yes # 开启 AOF
appendfilename "appendonly.aof"
appendfsync everysec # 每秒同步(推荐)
# appendfsync always # 每次写入都同步(最安全,性能低)
# appendfsync no # 操作系统决定(最快,不安全)AOF 重写
bash
# 自动重写(当文件增长到上次的100%且>=64MB时)
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
# 手动重写
BGREWRITEAOFRDB vs AOF 对比
| 对比项 | RDB | AOF |
|---|---|---|
| 文件大小 | 小 | 大 |
| 恢复速度 | 快 | 慢 |
| 数据安全性 | 可能丢失最后一次快照后的数据 | 最多丢失1秒数据 |
| 对性能影响 | 小(BGSAVE fork子进程) | 大(频繁写入) |
| 可读性 | 二进制 | 文本格式,可读 |
TIP
生产环境建议同时开启 RDB 和 AOF。RDB 用于快速恢复和备份,AOF 用于尽量减小数据丢失。