Redis的key過期處理策略



Redis中有三種處理策略:定時刪除、惰性刪除和定期刪除。

  1. 定時刪除:在設置鍵的過期時間的時候創建一個定時器,當過期時間到的時候立馬執行刪除操作。不過這種處理方式是即時的,不管這個時間內有多少過期鍵,不管服務器現在的運行狀況,都會立馬執行,所以對CPU不是很友好。
  2. 惰性刪除:惰性刪除策略不會在鍵過期的時候立馬刪除,而是當外部指令獲取這個鍵的時候才會主動刪除。處理過程為:接收get執行、判斷是否過期(這里按過期判斷)、執行刪除操作、返回nil(空)。
  3. 定期刪除:定期刪除是設置一個時間間隔,每個時間段都會檢測是否有過期鍵,如果有執行刪除操作。這個概念應該很好理解。

看完上面三種策略后可以得出以下結論: 
4. 1、3為主動刪除,2為被動刪除。 
5. 1是實時執行的,對CPU不是很友好,但是這在最大程度上釋放了內存,所以這種方式算是一種內存優先優化策略。 
6. 2、3為被動刪除,所以過期鍵應該會存在一定的時間,這樣就使得過期鍵不會被立馬刪除,仍然占用着內存。但是惰性刪除的時候一般是單個刪除,相對來說對CPU是友好的。 
7. 定期鍵這種刪除策略是一種讓人很蛋疼的策略,它既有避免1、2兩種策略劣勢的可能,也有同時發生1、2兩種策略劣勢的可能。如果定期刪除執行的過於頻繁就可能會演變成定時刪除,如果執行的過少就有可能造成過多過期鍵未被刪除而占用過多內存,如果時間的設置不是太好,既可能占用過多內存又同時對CPU產生不好的影響。所以。使用定期刪除的時候一定要把握好這個刪除的時間點。存在即為合理,既然開發的時候有這種策略,就說明定期刪除還是有他的優勢的,具體大家可以自己琢磨。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM