Redis 持久化机制

发布于:2025-07-03 ⋅ 阅读:(13) ⋅ 点赞:(0)

什么是持久化?

Redis 是基于内存的数据库,如果服务器宕机,内存数据将全部丢失。为了防止数据丢失,Redis 提供了 持久化机制(Persistence),将数据保存到磁盘上,实现数据恢复。


Redis 持久化方式一览

持久化方式 简称 类型 特点
RDB 快照 RDB 全量备份 内存快照,适合备份和灾难恢复
AOF 追加日志 AOF 增量日志 日志式恢复,数据更完整
混合持久化 AOF+RDB RDB + AOF Redis 4.0+ 默认更安全模式

一、RDB(Redis DataBase)快照持久化

工作原理

RDB 是将 内存中的数据快照 定时保存为一个二进制文件(dump.rdb),通常在以下情况触发:

  • 手动执行命令 SAVEBGSAVE
  • 配置项触发 save 900 1
  • 主从复制时(RDB 传输)
  • 重启 Redis,若有 RDB 文件会自动加载
    在这里插入图片描述

实现过程

  1. 执行 BGSAVE,Redis fork 出子进程
  2. 子进程将内存数据序列化并写入 RDB 文件
  3. 主进程继续处理请求

子进程结束后,替换旧的 RDB 文件

配置示例(redis.conf):

save 900 1       # 900秒内至少1个键发生变化
save 300 10      # 300秒内至少10个键变化
save 60 10000    # 60秒内至少10000个键变化

优点

  • 对性能影响小,主进程持续响应
  • 文件小,压缩好,适合备份/容灾
  • 启动恢复速度快

缺点

  • 数据不实时,可能丢失最后一次快照后的数据
  • fork 子进程消耗内存,频繁快照影响性能

二、AOF(Append Only File)日志持久化

工作原理

AOF 是将 Redis 执行的 每一条写命令 追加写入日志文件(appendonly.aof),可以完整记录数据库操作。

写入流程

  1. 每次写命令写入 aof_buf 缓冲区
  2. 按策略同步写入磁盘(fsync)
  3. AOF 重启时逐条命令重放恢复数据
    在这里插入图片描述

配置项(redis.conf)

appendonly yes               # 开启 AOF
appendfsync always           # 每次写操作都 fsync(慢但最安全)
appendfsync everysec         # 每秒 fsync 一次(默认推荐)
appendfsync no               # 交由操作系统决定时机

重写机制(AOF Rewrite)

AOF 会越来越大,Redis 会自动触发重写(rewrite):

  • 将当前数据生成最小命令集(替换旧日志)
  • 不影响原文件写入,使用双缓冲技术

优点

  • 数据更安全(可控 fsync 策略)
  • 支持命令重放,恢复能力强
  • 文件内容清晰可读(文本格式)

缺点

  • 文件大,性能开销高于 RDB
  • 每条写命令都记录,对写频繁系统负担大
  • 启动恢复慢(需重放所有命令)

三、混合持久化(Hybrid Persistence)

从 Redis 4.0 开始,引入混合持久化模式,结合 RDB 的性能与 AOF 的完整性。

原理

  • 在 AOF 重写时,将 RDB 快照内容写入 AOF 文件头部
  • 后续追加正常命令

配置项(redis.conf)

aof-use-rdb-preamble yes

优点

  • 加快重启恢复速度(先加载快照)
  • 保留日志完整性
  • 缩小 AOF 文件体积

四、持久化机制总结对比

特性 RDB 快照 AOF 日志 混合持久化
数据恢复速度 ⭐⭐⭐⭐⭐ ⭐⭐ ⭐⭐⭐⭐
数据完整性 ⭐⭐ ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐
文件体积 ⭐⭐⭐⭐⭐ ⭐⭐ ⭐⭐⭐
性能开销 ⭐⭐⭐⭐ ⭐⭐ ⭐⭐⭐
是否推荐 ✔ 备份场景 ✔ 高可靠场景 ✔ 默认推荐模式

五、常见问题

如何关闭持久化?

可配置关闭持久化:

save ""
appendonly no

适用于完全临时缓存场景。


RDB 和 AOF 可以同时开启吗?

是的。Redis 会优先使用 AOF 文件恢复(数据更新更完整),除非 AOF 文件损坏。


如何触发持久化手动执行?

# 手动生成 RDB 快照
redis-cli SAVE
redis-cli BGSAVE

# 手动 AOF 重写
redis-cli BGREWRITEAOF

总结

  • 小型系统:RDB 单独使用,适合容灾备份
  • 高可靠系统:AOF,保障写入日志完整
  • 大多数系统:开启混合持久化(推荐默认)

网站公告

今日签到

点亮在社区的每一天
去签到