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

励志当最强课代表的我来给大家总结总结👍👍👍
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
