Redis的過期鍵刪除策略


一,過期刪除策略

  redis數據庫鍵的過期時間都保存在過期字典中,根據系統時間和存活時間判斷是否過期。

  redis有三種不同的刪除策略:

  1,定時刪除:實現方式,創建定時器

  2,惰性刪除:每次獲取鍵時,檢查是否過期

  3,定期刪除:每隔一段時間,對數據庫進行一次檢查,刪除過期鍵,由算法決定刪除多少過期鍵和檢查多少數據庫

二,優缺點

  1,定時刪除,對內存友好,但是對cpu很不友好

  2,惰性刪除,對cpu友好,對內存很不友好

  3,定期刪除,是兩種折中,但是,如果刪除太頻繁,將退化為定時刪除,如果刪除次數太少,將退化為惰性刪除。

三,算法

  1,惰性刪除

    策略由expireIfNeeded函數實現,所有讀寫命令在執行之前都會調用該函數進行檢查,鍵寫入和獲取過程如圖所示:

    

    

  2,定時刪除

    刪除策略由activeExpireCycle算法決定

    關鍵點,遍歷數據庫,如果時間到,則終止;遍歷數據庫接着上次的進度,直到所有數據庫遍歷完,再接着遍歷;遍歷庫時候,隨機取出一定數量的隨機鍵

四,RDB和AOF時過期鍵的處理

  1,RDB生成時,過期鍵會被過濾

    RDB載入時,以主服務器運行,則過濾過期鍵

          以從服務器運行,則忽略過期鍵,不做處理

  2,AOF生成時,如果過期鍵還沒被刪除,則忽略,當被刪除以后,會追加記錄一條DEL命令

    AOF載入時,過期鍵會被過濾

    

 

 

 

 

 

  


免責聲明!

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



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