问题描述
使用Redis AOF重写策略时,配置文件参数与实际效果不一致,参数如下:
appendonly yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 1mb
理论结果:
当AOF文件首次达到1M时,触发重写策略
当AOF文件再次达到2M时,触发重写策略
当AOF文件再次达到4M时,触发重写策略
以此类推2^n,其中(n>=0)
实际结果:
当AOF文件首次达到1M时,触发重写策略
当AOF文件再次增大到1.6M,触发了重写策略
后续未再测试
问题出现的平台版本及自己尝试过哪些方法
CentOS7.4、Redis4.0.1
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
你期待的结果是什么?实际看到的错误信息又是什么?
问题:
如果按重写规则来计算,重写应该遵循2^n,其中(n>=0),但实际测试时,第二次重写并没有在2M时生效,而是在1.6M左右,看了一下网上的源码,自动触发的条件为:
long long growth =(server.appendonly_current_size*100/base) - 100;
if (growth >=server.auto_aofrewrite_perc)
AOF文件大小,是通过redis-cli info取值aof_current_size和aof_base_size
因为重写的目的就是以通过合并命令的方式减少文件大小啊.
到 1M 时触发重写, 重写后必然大小是少于 1M 的, 按照你的情况可以推算出重写后大小变为0.8M, 所以下一次重写发生在1.6M时.