redis過期策略

最近在讀redis深度歷險,記錄一下在讀書的過程中一些重要的知識點,供以後查閱。

redis過期策略有兩種,一種是主動式過期,另一種是被動式過期,redis採用兩者相結合的方式來處理,因爲單純採用主動式過期,會影響redis的性能,單純採用被動式過期,可能會導致大量內存得不到釋放。

主動式過期:

    redis會將所有設置了過期時間的key放到一個獨立的字典中,以後會定時掃描這個字典,將過期的key刪除。redis默認每秒進行10次過期掃描,掃描不會掃描所有的key,而是採用一種貪心的策略來進行:

1. 從過期字典中隨機選擇20個key。

2. 將20個key中過期的key刪除。

3. 如果過期的key的比例超過1/4,redis認爲過期的key相對較多,會再次從步驟1依次執行。

同時爲了保證掃描不會出現過度循環影響性能,redis會限制每次掃描的時間上限爲25ms。

 

被動式過期:

    redis定時掃描任務可能不會將過期的key完全刪除,此時redis會用一種懶惰策略來被動式的更新過期的key,即當這個key被實際訪問時,redis會檢查這個key的過期狀態,如果過期,那麼將這個key刪除。

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