美文网首页
第十一章 AOF持久化

第十一章 AOF持久化

作者: 今天不想掉头发 | 来源:发表于2019-07-26 20:04 被阅读0次

与RDB持久化通过保存数据库中的键值对来记录数据库状态不同,AOF持久化是通过保存Redis服务器所执行的谢明令来记录数据库状态的。

AOF持久化功能的实现可以分为3个部分:

  1. 命令追加
  2. 文件写入
  3. 文件同步
    AOF有3种不同的持久化行为:


    image.png

AOF文件的载入与数据还原是通过创建一个不带网络连接的伪客户端,然后伪客户端执行AOF文件中的写命令,来实现数据库状态的还原。

为了解决AOF文件体积膨胀的问题,Redis提供了AOF文件重写的功能,通过创建新的AOF来替代旧的AOF。
AOF重写的原理是通过读取服务器当前的数据库状态来实现的

AOF后台启动一个新的子进程执行重写操作,但是可能会存在重写后的AOF文件和当前数据库状态不一致的情况,因此,使用AOF重写缓冲区,将子进程开始执行AOF重写的时候,记录这期间Redis服务器执行的写记录,当子进程的AOF文件重写完成后,会发送一个信号给父进程,父进程会调用一个信号处理函数,并将AOF重写缓冲区的内容追加到新的AOF文件末尾,用新的AOF文件覆盖就的AOF文件,既完成了AOF文件的后台重写操作,注意,信号处理函数执行期间服务器进程是阻塞的,为了保证AOF文件和数据状态的一致性
上述即BGREWRITEAOF命令的实现原理。

image.png

相关文章

网友评论

      本文标题:第十一章 AOF持久化

      本文链接:https://www.haomeiwen.com/subject/tupdrctx.html