redis 過期鍵刪除策略


redis 的過期鍵的過期時間都保存在過期字典中,過期鍵的刪除策略有3種

  • 定時刪除:在設置鍵的過期時間的同時,創建一個定時器,讓定時器在鍵的過期時間來臨時,立即刪除對鍵的刪除操作。
  • 惰性刪除:放任鍵過期不管,但每次從鍵空間中獲取鍵時,都檢查取得的鍵是否過期,如果過期的話,就刪除該鍵。如果沒有過期,就返回該鍵。
  • 定期刪除:每隔一段時間,程序對數據庫進行一次檢查,刪除里面的過期鍵。至於刪除多少過期鍵,以及檢查多少數據庫,有算法決定。

1 定時刪除特點

優點:對內存友好,通過定時器可以保證過期鍵過期鍵會盡可能快的刪除,並釋放過期鍵占用的空間。

缺點:1)cpu不友好,在過期鍵比較多的情況下,刪除過期鍵可能會占用相當一部分cpu時間;在內存不緊張cpu緊張的情況下,將cpu時間用在刪除和當前任務無關的過期鍵上,無疑會對服務器響應時間和吞吐量造成影響。2)創建定時器需要Redis服務器中的時間事件,而現在時間事件的實現方式是無序鏈表,查找一個事件的時間復雜度為O(N),並不能高效的處理大量時間事件。

 

2 惰性刪除特點

優點:1)對cpu友好,程序只在取出鍵時才對建進行過期檢查,刪除的目標僅限於當前處理的鍵。

缺點:1)對內存不友好,當數據庫中有大量的過期鍵,而這些鍵又沒有被訪問到,那么他們也許會永遠不會被刪除。

 

3 定期刪除:是前兩種刪除策略的一種折中。會每隔一段時間執行一次刪除過期鍵操作,並通過限制操作執行的時長和頻率來減少刪除操作對cpu時間的影響。

難點:確定刪除策略的時長和頻率

1)如果刪除操作太過頻繁,或者執行時間太長,定期刪除策略就會退化成定時刪除策略。

2)如果刪除執行得太少,或者執行時間太短,定期刪除策略又會和惰性刪除策略一樣,出現浪費內存現象。

 


免責聲明!

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



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