1. RDB(Redis Database)持久化

原理:定时生成内存快照(snapshot)
触发方式

  • 手动执行SAVE/BGSAVE命令
  • 配置文件中设置保存规则(如save 900 1
  • 关闭服务时自动执行
# 配置文件示例
save 900 1 # 900秒内有1次修改
save 300 10 # 300秒内有10次修改
dbfilename dump.rdb

优点

  • 紧凑的二进制文件(适合备份)
  • 快速恢复大数据集
  • 性能影响小(子进程处理)

缺点

  • 可能丢失最后几分钟数据
  • 大数据量时保存较慢

2. AOF(Append Only File)持久化

原理:记录所有写操作命令(类似日志)
同步策略

  • always:每次写入都同步(最安全)
  • everysec:每秒同步(默认推荐)
  • no:由操作系统决定
# 配置文件示例
appendonly yes
appendfsync everysec
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

优点

  • 数据安全性更高(最多丢失1秒数据)
  • 可读的日志文件(便于分析)
  • 后台重写机制优化文件大小

缺点

  • 文件体积通常比RDB大
  • 恢复速度较慢
  • 对性能影响稍大

3. RDB vs AOF 对比

特性 RDB AOF
数据安全性 可能丢失分钟级数据 最多丢失1秒数据
文件大小 紧凑(二进制格式) 较大(文本命令记录)
恢复速度 较快 较慢
性能影响 保存时影响较大 持续写入影响较小
可读性 不可读 可读(操作命令记录)

4. 混合持久化(Redis 4.0+)

原理:结合RDB和AOF优势,AOF文件包含:

  • RDB格式的数据头
  • 增量AOF命令
# 启用混合持久化
aof-use-rdb-preamble yes

恢复流程

  1. 先加载RDB部分数据
  2. 再重放后续AOF命令