2015-06-18 15 views
1

我在設置存儲序列化Java對象(平均大小爲30k)的redis緩存時遇到問題 我們只是更改了實現,以便所有緩存對象都沒有到期(ttl == -1)Redis緩存在未經同意的情況下被週期性刷新

我再變redis.conf像這樣

set maxmemory-policy allkeys-lru (was volatile-ttl) 
set maxmemory-samples 7 (was 3=default) 
set maxmemory 1gb (was 300mb) 

我們已經到位以下 '保存' 規則

save 900 1 
save 300 10 
save 60 10000 

的是起訴是,每當保存1000-8000個密鑰時,整個緩存將被刷新爲0,重新開始。

我無法找到這個源頭,我試圖做

redis-cli monitor | grep "DEL" 

但它表明正在發行 沒有大量刪除的我也試過

redis-cli monitor | grep flush 

但這顯示沒有輸出幾分鐘。 我試着在增加maxmemory-setting(儘管我不應該)後重新啓動redis服務,但是這也顯示行爲沒有變化。

以前有沒有人見過類似的東西? 注意:我們使用Redis 2.8 - 如果以後版本中有補丁,我願意升級 如果您需要更多詳細信息以縮小問題,請告訴我。

謝謝!

回答

2

這個問題最終成爲用戶錯誤。 在我們的客戶端代碼中,程序調用了redis.del(keyname)和隨後的redis.flushDB(),程序員在嘗試將更改推送到數據庫時不知不覺地添加了它。

我早就發現這個問題遲早如果我改進我的grep略:

redis-cli monitor | grep -i flush 
相關問題