1、定時刪除:
一旦鍵過期就立即從內存中刪除,節省內存空間,但刪除過程會占用大量CPU時間,可能影響服務器的響應時間和吞吐量。
2、惰性刪除:
并不會立即從內存中刪除過期鍵,而是在需要訪問時才會檢查是否過期。這樣對CPU友好,但可能導致內存泄漏,因為即使鍵過期也不會被刪除。
3、定期刪除:
定期對一些鍵進行檢查和刪除,可以有效釋放過期鍵占用的內存。雖然可以限制刪除操作執行的時長和頻率,降低對CPU的影響,但難以確定刪除操作執行的時長和頻率,執行過于頻繁或較少都可能帶來問題。
Redis默認使用的策略
????????Redis 默認使用的是惰性刪除策略和定期刪除混合使用。這意味著當客戶端嘗試讀取一個鍵時,Redis 會先檢查該鍵是否過期,如果過期則會立即刪除。這種策略保證了過期鍵在被訪問時能夠及時被清理,但也會帶來一定的性能開銷,因為每次讀取鍵時都需要進行過期檢查。
? ? ? ? 所以,Redis 還會周期性地(默認每秒鐘檢查 10 次)在后臺進行定期刪除(Eviction)。定期刪除主要用于處理那些沒有被惰性刪除的過期鍵。定期刪除會檢查一部分設置了過期時間的鍵,然后刪除其中已經過期的鍵。
ps:以下是我整理的java面試資料,密碼是obht,感興趣的可以看看。最后,創作不易,覺得寫得不錯的可以點點關注!
鏈接:https://www.yuque.com/u39298356/uu4hxh?# 《Java面試寶典》?