欢迎光临散文网 会员登陆 & 注册

【趣话Redis第二弹】Redis数据持久化AOF和RDB原理一次搞懂!

2022-11-29 16:37 作者:日月潭的呼唤他  | 我要投稿

励志当最强课代表的我来给大家总结总结👍👍👍

Redis数据持久化AOF和RDB原理一次搞懂!


视频内容:

1️⃣Redis 介绍✍️

2️⃣方案 RDB📄

3️⃣ LF 备份🏷️

4️⃣指令合并📑


视频内容:

1️⃣Redis 介绍✍️

Redis 是antirez创建的


00:09




2️⃣方案 RDB📄

定义了一个二进制的格式,把数据一条码在一起,生成了一个 RDB 文件提供一个配置参数,既可以支持周期性备份,也可以避免做无用功。就像这样多个条件可以组合使用

创建一个子进程去做这件事,不能浪费时间。有了备份文件,只要备份文件还在,就能在启动的时候读取,快速恢复之前的状态了


01:00




3️⃣ LF 备份🏷️

执行的所有写入命令都记录下来,专门写入了一个文件,并给这种持久化方式也取了一个名字 LF 不过我遇到了 RD B 方案同样的问题,

不能每执行一条写入命令就记录到文件中,那会严重拖垮我的性能。准备一个缓冲区,然后把要记录的命令先临时保存在这里,然后再择机写入文件。把这个临时缓冲区叫做 a of boss 这一次我不像之前那么冲动,

写的这个 LF 备份文件越来越大,不仅非常占硬盘空间,复制移动加载分析都非常的麻烦。

把这个过程叫做 AOF 重写。这工作量实在太大了,分析起来也颇为麻烦,浪费很多精力跟时间。


03:02




4️⃣指令合并📑

三条指令可以合并成一条搞定 AOF 文件重写的思路是有了,不过这件事干起来还是很耗时间。

决定和 RD B 方式一样, fork 出一个子进程来做这件事情谨慎。准备了一个缓冲区 AOF 重写缓冲区。从创建重写子进程开始的那一刻起,把后面来的写入命令也 copy 一份写到这个重写缓冲区中。

等到子进程重写文件结束之后,再把这个缓冲区中的命令写入到新的 L F 文件中,最后再重命名新的文件,替换掉原来的那个臃肿不堪的大文件,终于大功告成。


04:56





【趣话Redis第二弹】Redis数据持久化AOF和RDB原理一次搞懂!的评论 (共 条)

分享到微博请遵守国家法律