RDB : 记录 redis系统中的键值对来实现持久化; AOF : 记录redis系统执行的写命令实现持久化
命令追加
- redis接收客户端命令,若为写命令,则同步到aof缓冲区
- 时间函数循环
- 根据客户自己的配置,将aof缓冲区中的内容同步到aof文件中
aof配置选项的内容如下:
- always : aof 缓冲区中的所有内容都同步到文件中
- everysec : aof缓冲区中的内容写入到文件中;上次同步时间超过1秒钟,则进行同步
- no : aof缓冲区中的内容写入到文件中,何时同步取决于操作系统
AOF文件重写
由于aof记录的是客户端发送的写命令,对同一个键记录多次命令后,发现可能只是需要记录一个命令便可。
重写的过程如下:
- 创建aof文件重写的子进程,这样便不会堵塞服务器
- 创建aof重写缓冲区,客户端发送的写命令会同时缓存到aof缓冲区、aof重写缓冲区
- 子进程完成文件重写后,告知父进程
- aof重写缓冲区中的内容同步到新的aof文件
- aof新文件完成对原有文件的覆盖