?? ?定時刪除:
- 每個設置了TTL的key中都會創建一個計時器,等到過期時間就會立即刪除
- 對內存友好,但是會占用大量的CPU資源去處理過期數據,從而影響緩存的吞吐量和響應時間
惰性刪除:
- 設置了key的過期后,不會立即刪除,而是當我們訪問的時候,會檢查該key是否已過期,如果過期則刪除,沒有過期則繼續使用
- 對可以最大化地節省CPI資源,但是十分消耗內存,在極端情況下,可能會出翔大量的過期key沒有被再次訪問,從而一直存在內存中沒有被釋放
定期刪除:
- 每隔一段時間,掃描一定數量的數據庫的expires字典中一定數量的隨機key,刪除其中已過期的數據
- 可以通過限制刪除操作執行的時長和頻率來減少刪除操作對CPU影響
- slow模式,執行頻率默認為10hz,每次不超過25ms
- fast模式:執行頻率不固定,兩次間隔不低于2ms,每次耗時不超過1ms