redis AOF重写策略疑问

新手上路,请多包涵

问题描述

使用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

阅读 3k
1 个回答

因为重写的目的就是以通过合并命令的方式减少文件大小啊.

到 1M 时触发重写, 重写后必然大小是少于 1M 的, 按照你的情况可以推算出重写后大小变为0.8M, 所以下一次重写发生在1.6M时.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题