对重复冗余过期的明命令进行精简,创建新的AOF文件,覆盖旧的AOF文件
set hello world
set hello jack
set hello zhangsan
incr count
rpush mylist a
rpush mylist b
rpush mylist c
过期数据
rpush mylist a b c
减少磁盘占用量
加速恢复速度
执行 aof 重写请求
如果当前进程正在执行 aof 重写,请求不执行并返回如下响应
ERR Background append only file rewriting already in process
如果当前正在执行?bgsave?,重写命令等待?bgsave?完成后执行 ,返回如下响应
Background append only file rewriting shceduled
父进程执行 fork 创建子进程,开始等同于bgsave过程
父进程 fork 操作完毕之后,依然响应其他命令,所有修改命令依然写入 aof 缓冲区,并根据?appendfsync策略同步到硬盘,保证原有 aof 机制的有效性.
由于 fork 操作采用写时复制技术,子进程只能共享fork 操作时的内存数据,由于父进程依然响应命令,redis 使用?aof 重写缓冲区?保存这部分新数据,防止aof文件生成期间这部分数据的丢失.
子进程根据内存快照,按照命令合并规则写入到新的 aof 文件
新 aof 文件 写入完成之后,子进程通知 父进程,父进程更新统计信息
父进程把 aof 重写缓冲区的数据写入 新的 aof 文件
使用 新 aof 文件替换 旧的 aof 文件
以上就是土嘎嘎小编为大家整理的Redis持久化-AOF重写相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!