第十一章 AOF持久化
11.1 AOF持久化的实现
AOF持久化功能实现分为命令追加、文件写入、文件同步三个步骤。
11.1.1 命令追加
当AOF持久化功能出于打开状态时,服务器执行完一个写命令之后,会以被执行的写命令追加到服务器的aof_buf
缓冲区的末尾
11.1.2 AOF文件的写入与同步
Redis的服务器进程就是一个事件循环。
每次结束一个事件循环之前,都会调用flushAppendOnlyFile
函数,考虑是否将缓冲区的内容写入和保存到AOF文件里面。
AOF三个模式下no最快但是不保证、everysync足够快乐,但是always效率受影响。
11.2 AOF文件载入与数据还原
11.3 AOF重写
11.3.1 AOF文件重写的实现
就是去除的冗余的命令,让多个push 只保留最终状态。
11.3.2 AOF后台重写
为了让重写后数据库保持一致。
设置AOF重写缓冲区。
11.4 重点回顾
- AOF 文件通过保存所有修改数据库的写命令请求来记录服务器的数据库状态
- AOF文件中的所有命令都以Redis命令请求协议的格式保存
- 命令请求先保存到AOF缓冲区再定期写入并同步到AOF文件
- appendfsync三个模式性能不同。
- aof会重新,并保持一致性会有一个aof重写缓冲区。