Redis 持久化机制

Redis 持久化机制

Redis 是内存数据库,断电数据就没了,所以需要持久化。

1. 为什么要持久化

  • Redis 数据在内存中
  • 服务器断电/重启数据丢失
  • 持久化把数据存到磁盘
  • 重启后可以恢复数据

2. RDB 快照

原理: 定时把内存数据全量保存到磁盘。

优点:

  • 恢复速度快
  • 文件小
  • 适合备份

缺点:

  • 可能丢失最后一次快照后的数据
  • fork子进程可能阻塞

配置:

# redis.conf
save 900 1      # 900秒内1个key变化就保存
save 300 10     # 300秒内10个key变化
save 60 10000   # 60秒内10000个key变化

手动触发:

# 前台保存(阻塞)
redis-cli save

# 后台保存(不阻塞)
redis-cli bgsave

3. AOF 日志

原理: 记录每个写命令,重启时重放。

优点:

  • 数据更安全(最多丢1秒)
  • 日志可读

缺点:

  • 文件比 RDB 大
  • 恢复速度慢

配置:

# redis.conf
appendonly yes              # 开启AOF
appendfilename "appendonly.aof"

# 同步策略
appendfsync everysec       # 每秒同步(推荐)
# appendfsync always       # 每次写都同步
# appendfsync no           # 交给操作系统

AOF 重写:

# 手动触发AOF重写
redis-cli bgrewriteaof

4. RDB vs AOF 对比

对比项 RDB AOF
数据安全 可能丢数据 更安全
文件大小 小 大
恢复速度 快 慢
性能影响 fork阻塞 较小
适用场景 备份/容灾 数据安全要求高

5. 混合持久化

Redis 4.0+ 支持混合持久化:

  • AOF 重写时前半段用 RDB 格式
  • 后半段增量用 AOF 格式
  • 结合两者优点

配置:

aof-use-rdb-preamble yes

6. 生产建议

1)数据不敏感用 RDB

  • 缓存场景
  • 丢点数据没关系

2)数据重要用 AOF

  • 每秒同步
  • 最多丢1秒数据

3)生产环境推荐

  • 同时开 RDB + AOF
  • 混合持久化
  • 定期备份 RDB 文件

7. 数据恢复

RDB 恢复:

# 把 dump.rdb 放到数据目录
# 重启 Redis 自动加载

AOF 恢复:

# 开启 appendonly yes
# 重启自动重放AOF日志

8. 常见问题

1)fork 阻塞怎么办

  • 数据量大 fork 慢
  • 用 AOF 代替
  • 减少单实例数据量

2)AOF 文件太大

  • 定期触发重写
  • 设置自动重写阈值

3)恢复慢怎么办

  • 用 RDB 恢复快
  • 混合持久化更优

总结

Redis 持久化要点:

  • RDB 是快照,恢复快但可能丢数据
  • AOF 是日志,数据安全但文件大
  • 生产建议同时开 RDB + AOF
  • 混合持久化结合两者优点
  • 缓存用 RDB,重要数据用 AOF
  • 定期备份持久化文件
  • fork 阻塞要关注数据量

持久化是 Redis 生产必备配置,一定要重视。


emer 发布于  2026-10-9 07:28 

Redis 持久化详解

Redis 两种持久化机制对比

Redis 是内存数据库,重启数据就没了,所以持久化很重要。Redis 有两种持久化方式:RDB 和 AOF。

1. RDB 快照

RDB 就是把整个内存数据快照存成文件。

优点:

  • 文件小,恢复快
  • 适合备份和灾难恢复

缺点:

  • 可能丢数据,两次快照之间的写入会丢

配置:

save 900 1        # 900秒内至少1个key变化就快照
save 300 10       # 300秒内至少10个key变化
save 60 10000     # 60秒内至少10000个key变化

2. AOF 日志

AOF 把每个写操作都记录到日志文件,重启时重放日志恢复数据。

优点:

  • 数据更安全,最多丢1秒
  • 日志可读,误删可以手动修复

缺点:

  • 文件比 RDB 大
  • 恢复慢

配置:

appendonly yes
appendfsync everysec   # 每秒刷盘一次

3. 混合持久化

Redis 4.0 支持混合持久化,RDB 做全量,AOF 做增量。

aof-use-rdb-preamble yes

生产环境推荐用这个,兼顾性能和数据安全。

4. 怎么选

  • 纯缓存场景:不要持久化,性能最好
  • 数据不能丢:用 AOF 或混合持久化
  • 需要快速恢复:用 RDB

总结

Redis 持久化没有完美方案,根据业务场景选。生产环境建议混合持久化,兼顾性能和数据安全。


emer 发布于  2026-10-4 10:30 
'); })();