《Redis设计与实现》学习笔记(九) 第十一章 AOF持久化
文章目录
一. AOF持久化的实现
1. 命令追加
- 一个写命令在服务器执行完后,会被添加到
aof_buf缓冲区
的末尾
2. AOF文件的写入与同步
- 在服务器一个循环事件结束之前,考虑调用
flushAppendOnlyFIle
将缓冲区的内容写入AOF文件 - 而这个函数又由appendfsync选项的值决定,有always, everysec, no
二.AOF文件的载入与数据还原
- 通过AOF文件还原数据库的详细步骤:
- 创建一个伪客户端
- 从AOF文件中分析并读取一条写命令
- 使用伪客户端执行命令
- 重复第2,3步知道命令执行完毕
三. AOF重写
1. AOF文件重写的实现
通过读取
原有AOF
文件的键值
来确定最有效率的重写方法
2. AOF文件后台重写
- 用子进程重写AOF
- 在重写过程中新产生的写命令将放入
AOF重写缓冲区
,这个缓冲区将在子进程开启后开启,子进程结束后重写缓冲区的命令会被直接新AOF文件