REDIS過期KEY通知沒有立即觸發的問題

在開發過程當中,在獲取REDIS過期KEY所產生的回調通知中遇到這麼一個問題:配置文件定期刪除頻率設置的20HZ,但實際接收到expire通知還是晚了十幾秒,但如果向其發出get請求,expire通知可以立即到達

 

分析:惰性刪除正常執行,而預想的expire定期刪除策略沒有正常執行

 

由於目前環境中REDIS裏有4000多個帶有TTL的KEY,僅有個位數的KEY需要通知回調,按該文所說刪KEY採用的是限定時間隨機採樣刪除法,因此每次循環會有概率採不到將需要產生通知的KEY

 

解決方法:

1.在後臺定時執行keys * ,在KEY數不多時可以這樣處理

2.更改REDIS源代碼,採樣時按TTL升序採樣,提高已經過期KEY被採到的概率

3.調整刪除策略爲定時刪除策略,但這樣CPU定時器的開銷會增大

4.從業務角度出發,將能設置爲不帶TTL的KEY儘量設置爲不帶TTL

5.業務上不是所有帶TTL的KEY都需要通知回調,可以將需要監視的過期KEY換到單獨的db中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章