redis有两中数据持久化的方法,RDB和AOF。其中的AOF技术是相对RDB几乎实时去实现数据指令的一个持久化,将每一个数据操作指令以日志追加形式写入aof文件里面,但是如果一直追加有可能导致aof文件过大,造成IO性能的问题,为解决这个aof文件过大问题,redis设计出AOF重写机制。
AOF重写机制
通过压缩AOF文件里面的相同指令保留最新的一个数据操作指令,即将存储了某个key的多次变更记录只是存储最新的变更记录即可,丢弃历史变更记录 。
重写机制详细步骤
- 旧AOF文件过大触发重写机制
- 创建子进程构建一个新的aof文件
- 子进程读取当前redis里面的数据,写入到新的aof文件里面
- 读取redis数据期间,主进程如果有其他新的操作指令则写入重写缓存中
- 重写完成以后,将重写缓存追加到新的aof文件中
- 用新的aof文件覆盖现有的aof文件