Skip to content

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

# 手动重写
BGREWRITEAOF

RDB vs AOF 对比

对比项RDBAOF
文件大小
恢复速度
数据安全性可能丢失最后一次快照后的数据最多丢失1秒数据
对性能影响小(BGSAVE fork子进程)大(频繁写入)
可读性二进制文本格式,可读

TIP

生产环境建议同时开启 RDB 和 AOF。RDB 用于快速恢复和备份,AOF 用于尽量减小数据丢失。