Redis 提供了bgrewriteaof
日志重写指令用于对 AOF 日志进行瘦身
。其原理就是开辟一个子进程对内存
进行遍历转换成一系列 Redis 的操作指令,序列化到一个新的 AOF 日志文件中。(注意这里也是读内存,没有管历史文件)
临时文件
里,不依赖原来的AOF文件 重写AOF文件的操作,并没有读取旧的AOF文件,而是将整个内存中的数据库内容用命令的方式(相当于rdb)重写了一个新的AOF文件 重写过程分析,建议大家都看看,加强理解
AOF重写可以由用户通过调用BgRewriteAOF手动触发。 服务器在AOF功能开启的情况下,会维持以下三个变量:
aof_current_size
。aof_rewrite_base_size
。aof_rewrite_perc
。每次当serverCron
(服务器周期性操作函数
)函数执行时,它会检查
以下条件是否全部满足
,如果全部满足的话,就触发自动的AOF重写操作:
如果前面三个条件都满足,并且当前AOF文件大小比最后一次AOF重写时的大小要大于指定的百分比,那么触发自动AOF重写
。