redis混合模式持久化
1.Redis 持久化模式概述
Redis 提供两种主要的持久化机制: (1)RDB(Redis Database)快照: 在指定的时间间隔内将整个数据集快照保存到一个二进制文件中。 恢复时加载这个二进制文件,恢复速度快,但可能会丢失最近的一些数据(因为快照是间隔保存的)。
(2)AOF(Append-Only File)日志: 将每个写操作都记录到日志文件中。 恢复时重放所有的写操作日志,数据更完整,但恢复速度较慢(因为需要重放所有操作)。
(3)混合持久化模式原理 混合持久化模式结合了 RDB 和 AOF 的优点,以提高数据恢复的效率和可靠性。 具体过程如下:
#在持久化时: Redis 会在保存 AOF 文件时,首先生成一个 RDB 快照并将其作为 AOF 文件的前缀。 在 AOF 文件的前半部分包含了一个完整的数据快照(RDB 快照)。 在 AOF 文件的后半部分,记录了自生成 RDB 快照以来的所有写操作日志。
#在恢复时: Redis 首先加载 AOF 文件中的 RDB 快照部分,这个过程非常快,因为它只是加载一个二进制文件。 然后,Redis 会继续读取并重放 AOF 文件中记录的写操作日志,以恢复生成 RDB 快照之后的所有数据更改。
#优点 恢复速度快:因为首先加载的是 RDB 快照,整个数据集可以一次性快速恢复,然后再重放后续的写操作日志,相比完全重放整个 AOF 日志快得多。 数据安全性高:AOF 文件记录了每一个写操作,确保数据的完整性,减少数据丢失的可能性。
2.混合模式简介
Redis 的混合模式(Hybrid Persistence Mode)结合了 AOF(Append-Only File)和 RDB(Redis Database)持久化的优点,以确保数据的高可靠性和快速恢复。
3.混合模式流程图
#流程说明
redis重启数据恢复过程如上图 1.首先会先判断是否开启AOF持久化,如果未开启则进入RDB的数据恢复流程。 2.发现开启了AOF持久化则会找到对应的AOF文件进行读取。 3.读取时会对文件头部内容进行分析,如果发现是RDB格式的数据则加载RDB数据内容,再加载剩余的AOF日志。 4.如果头部不是RDB文件格式则直接以 AOF 格式加载整个文件。 5.文件加载完成后则数据也恢复完毕
4.详细工作流程示例
(1)生成混合持久化文件: Redis 在某个时刻生成了一个 RDB 快照,将其保存到 AOF 文件的前缀部分。 之后的所有写操作(例如 SET、DEL 等)都记录在 AOF 文件的后半部分。 假设 AOF 文件如下表示: AOF 文件: | RDB 快照 | 写操作1 | 写操作2 | 写操作3 | ...
(2)恢复过程: Redis 启动时,首先读取 AOF 文件中的 RDB 快照部分,快速加载数据集。 然后,Redis 继续读取 AOF 文件中的写操作日志,并逐个重放这些操作,以确保数据集与持久化时一致。 恢复后的顺序: 1. 加载 RDB 快照 2. 重放写操作1 3. 重放写操作2 4. 重放写操作3 5. ... 通过这种方式,混合持久化模式能在保证数据完整性的同时,大大加快数据恢复速度。
5.Redis 中启用混合模式的步骤
编辑 Redis 配置文件: 找到你的 Redis 配置文件 redis.conf,通常在 /etc/redis/ 或者你自己设置的目录下。 (1)配置 AOF 和 RDB: 确保以下配置项存在并设置为 yes: appendonly yes (2)并设置 AOF 重写策略为 everysec 或者 always: appendfsync everysec (3)RDB 持久化配置项(默认是启用的,如果你手动禁用了需要重新启用): save 900 1 save 300 10 save 60 10000 (4)启用混合持久化模式: 在 redis.conf 中找到 aof-use-rdb-preamble 参数,并设置为 yes: aof-use-rdb-preamble yes (5)重新启动 Redis 服务: sudo systemctl restart redis
6.配置项的具体说明
1. appendonly 启用 AOF 持久化。 appendonly yes 2. appendfsync 设置 AOF 文件同步策略。可选值: always:每次写入操作后都同步到磁盘,最安全但性能较差。 everysec:每秒同步一次,推荐设置。 no:不主动同步,由操作系统决定何时同步。 appendfsync everysec 3. save RDB 快照的保存规则。格式为 save <seconds> <changes>,表示在指定秒数内如果有指定次数的写操作,则创建快照。 save 900 1 save 300 10 save 60 10000 4. aof-use-rdb-preamble 启用混合持久化模式。设置为 yes 时,AOF 文件的开头将包含一个 RDB 快照。