- redis接受请求、处理请求、aof持久化是一个同步操作;并非异步操作(redis每次修改命令,会将持久化命令写到缓冲区里面;等达到落盘条件之后;从缓冲区进行落盘操作)
- 如果配置每次操作落盘,则会影响redis性能;
- aof的rewriteaof操作,则会在重写aof持久化文件;(命令的重复去重操作)
- redis4.0以后 aof持久化文件里面包含rdb的二进制流后面追踪的是aof操作
- redis4.0以后的rewriteAof 是一个异步的操作(知识fork一个子进程是阻塞操作,但耗时很短)。先进行rdb备份,然后再从aof缓冲区里面进行aof操作备份;最后进行文件的替换
- redis备份重启恢复,优先进行aof文件的恢复,如果没有aof,则查找rdb文件;4.0版本后的混合备份文件,则显示为aof文件,优先进行恢复;
- rewrite触发条件:
1、手动触发 、bgrewriteaof命令 2、自动触发 最小文件大小配置;如果aof文件大小大于等于此配置大小则重写aof 当前aof文件大小与最后一次重写完成的文件大小比率大于配置值,则重写aof
-
rewrite步骤
1、如果bgsave/bgrewriteaof 或者fork正在运行,则不运行 2、如果只有当前一个进程在运行;则首先fork一个子线程 fork线程的时候是阻塞的; 3、fork完成之后,阻塞操作结束;异步进行rdb文件持久化;rdb持久化完成,通知主线程已经完成 4、然后将aof缓存区的数据进行写入到aof文件中去 5、写入完成之后,通知主线程已经完成;然后进行aof文件的覆盖
aof 持久化知识点
最新推荐文章于 2022-08-28 13:34:32 发布