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 100004)启用混合持久化模式:
在 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 快照。

 

posted @ 2024-07-11 11:19  Leonardo-li  阅读(10)  评论(0编辑  收藏  举报