鍍金池/ 問(wèn)答/人工智能/ redis AOF重寫(xiě)策略疑問(wèn)

redis AOF重寫(xiě)策略疑問(wèn)

問(wèn)題描述

使用Redis AOF重寫(xiě)策略時(shí),配置文件參數(shù)與實(shí)際效果不一致,參數(shù)如下:

appendonly yes
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 1mb

理論結(jié)果:

當(dāng)AOF文件首次達(dá)到1M時(shí),觸發(fā)重寫(xiě)策略
當(dāng)AOF文件再次達(dá)到2M時(shí),觸發(fā)重寫(xiě)策略
當(dāng)AOF文件再次達(dá)到4M時(shí),觸發(fā)重寫(xiě)策略
以此類(lèi)推2^n,其中(n>=0)

實(shí)際結(jié)果:

當(dāng)AOF文件首次達(dá)到1M時(shí),觸發(fā)重寫(xiě)策略
當(dāng)AOF文件再次增大到1.6M,觸發(fā)了重寫(xiě)策略
后續(xù)未再測(cè)試

問(wèn)題出現(xiàn)的平臺(tái)版本及自己嘗試過(guò)哪些方法

CentOS7.4、Redis4.0.1

相關(guān)代碼

// 請(qǐng)把代碼文本粘貼到下方(請(qǐng)勿用圖片代替代碼)

你期待的結(jié)果是什么?實(shí)際看到的錯(cuò)誤信息又是什么?

問(wèn)題:
如果按重寫(xiě)規(guī)則來(lái)計(jì)算,重寫(xiě)應(yīng)該遵循2^n,其中(n>=0),但實(shí)際測(cè)試時(shí),第二次重寫(xiě)并沒(méi)有在2M時(shí)生效,而是在1.6M左右,看了一下網(wǎng)上的源碼,自動(dòng)觸發(fā)的條件為:

long long growth =(server.appendonly_current_size*100/base) - 100;
 if (growth >=server.auto_aofrewrite_perc)

AOF文件大小,是通過(guò)redis-cli info取值aof_current_size和aof_base_size

回答
編輯回答
愿如初

因?yàn)橹貙?xiě)的目的就是以通過(guò)合并命令的方式減少文件大小啊.

到 1M 時(shí)觸發(fā)重寫(xiě), 重寫(xiě)后必然大小是少于 1M 的, 按照你的情況可以推算出重寫(xiě)后大小變?yōu)?.8M, 所以下一次重寫(xiě)發(fā)生在1.6M時(shí).

2017年11月2日 09:02