Redis 单机数据库实现—AOF 持久化

介绍

RDB 文件中保存的是数据库状态,AOF 文件中保存的数据执行命令,是数据库过程。

持久化的实现

命令追加

执行完一个写命令后,会以协议格式将命令追加到服务器状态的 aof_buf 缓冲区的末尾。

文件写入与同步

写入缓冲区,然后根据 appendfsync 配置进行同步。
如果是 always,每次都进行同步,如果是 everysec,超过 1s 再同步,如果是 no,不同步,由操作系统同步。

文件的载入与数据还原

AOF 重写

为了解决 AOF 文件体积膨胀的问题,会创建一个新的文件替代现有的文件,两个文件保存的数据库状态相同。

实现

将整个过程的命令,简化成初始化现有数据库状态的命令。

后台重写

重写会阻塞服务器,使用子进程来进行重写。子进程重写期间,服务器正常处理命令请求。子进程重写完后给父进程发送信号,父进程将这个过程中产生的新命令追加到新文件的末尾,此时不能客户端的请求是不能处理的。

-------------本文结束感谢您的阅读-------------

本文标题:Redis 单机数据库实现—AOF 持久化

文章作者:

发布时间:2019年11月03日 - 00:11

最后更新:2021年12月10日 - 13:12

原始链接:http://huihui.couplecoders.tech/2019/3CW0C2J/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。