AOF持久化
AOF通过保存Redis服务器所执行的写命令来记录数据库状态
AOF持久化的实现
可以分为命令追加、文件写入、文件同步三个步骤
命令追加
当AOF持久化功能处于打开状态时,服务器执行完一个写命令之后,会以协议格式将被执行的写命令追加到服务器状态的aof_buf缓冲区的末尾
AOF文件的写入的同步
Redis的服务器进程是一个事件循环,循环中的文件事件负责接收客户端的命令请求,以及向客户端发送命令回复,而时间事件负责执行像serverCron函数这样需要定时运行的函数
服务器每次结束一个事件循环之前,它都会调用flushAppendOnlyFile函数,考虑是否需要将aof_buf缓冲区中的内容写入和保存到AOF文件里面
flushAppendOnlyFile函数的行为由服务器配置的appenfsync选项的值来决定
默认为everysec
AOF文件的载入与数据还原
数据库之要读入并重新执行一遍AOF文件里面的保存的写命令,就可以还原
AOF重写
AOF文件重写功能解决了AOF文件体积膨胀的问题
创建一个新的AOF文件,不包含任何浪