1. RDB (Redis Database)
把当前进程生成快照保存到硬盘的过程。
1.1 触发机制
触发 RDB 持久化过程分为手动触发和自动触发。
- 手动触发 分别对应
save和bgsave命令- save: 阻塞当前 Redis 服务器,直到 RDB 过程完成为止,对于内存比较大的实例会造成长时间阻塞。
- bgsave:Redis 进程执行 fork 操作创建子进程,RDB 持久化过程由子进程负责,完成后自动结束。
- 自动触发
- 命令
save m n: m 秒 内数据集存在 n 次修改时,自动触发 bgsave。 - 从节点执行全量复制操作,主节点自动执行 bgsave 生成 RDB 文件并发送给从节点。
- 执行
debug reload命令重新加载 Redis 时,自动触发 save 操作。 - 默认情况下执行
shutdown命令时,如果没有开启 AOF 持久化功能则自动执行 bgsave。
- 命令
1.2 流程说明

1.3 优缺点
优点:
- RDB 是一个紧凑压缩的二进制文件,代表 Redis 在某一个时间点上的数据快照。非常适合用于备份,全量复制等场景。比如每 6 小时执行 bgsave 备份,并把 RDB 文件拷贝到远程机器或者文件系统中(如 hdfs ),用于灾难恢复。
- Redis 加载 RDB 恢复数据远远快于 AOF 方式。
缺点:
- RDB 方式数据没办法做到实时持久化/秒级持久化。因为 bgsave 每次运行都要执行 fork 操作创建子进程,属于重量级操作,频繁执行成本过高。
- RDB 文件使用特定二进制格式保存,Redis 版本演进过程中有多个格式的 RDB 版本,存在老版本 Redis 服务无法兼容新版 RDB 格式的问题。
针对 RDB 不适合实时持久化的问题,Redis 提供了 AOF 持久化方式来解决
2. AOF (Append Only File)
以独立日志的方式记录每次写命令,重启时再重新执行 AOF 文件中的命令达到回复数据的目的。
开启 AOF 功能需要设置配置:appendonly yes,默认不开启。AOF文件通过appendfilename 配置设置,默认文件名是 appendonly.aof。保存路径同RDB 持久化方式一致。通过dir配置指定。AOF 的工作流程操作:命令写入(append)、文件同步(sync)、文件重写(rewrite)、重启加载(load)。
2.1 流程说明
- 所有的写入命令会追加到 aof_buf(缓冲区)中。
- AOF 缓冲区根据对应的策略向硬盘做同步操作。
- 随着 AOF 文件越来越大,需要定期对 AOF 文件进行重写,达到压缩的目的。
- 当 Redis 服务重启时,可以加载 AOF 文件进行数据恢复。

参考:
- 《Redis开发与运维》