redis過時策略與內存淘汰機制分析

過時策略:

  咱們在set key時,能夠給一個expire time,就是過時時間redis

  這段過時時間之後,redis對key刪除使用:按期刪除+惰性刪除算法

  按期刪除指redis默認在100ms內隨機抽取一些設置了過時時間的key,檢查是否過時,過時就刪除。排序

  按期刪除由於隨機的,不少key沒有刪除,就用到惰性刪除內存

  惰性刪除是在查詢某個key時,redis檢查下這個key是否過時,過時就刪除。im

  

  可是若是按期刪除漏掉不少過時key,也沒進行查詢,不能惰性刪除,形成不少過時key堆積內存中,致使內存耗盡,這時使用內存淘汰機制。鏈表

 

內存淘汰機制:

  通常使用allkeys-lru:當內存不足以容納新寫入數據時,在鍵空間內移除最少使用的key數據

  LRU回收算法:

    使用哈希鏈表。哈希表由若干個key-value組成,邏輯上這些key,value是無序的。在哈希鏈表中,每一個key-value都有他的前驅key-value、後驅key-value,像雙向鏈表中的節點。這樣哈希鏈表就有序。查詢

    將哈希列表中的key-value按照時間排序。di

    每次訪問新的key,將其key-value插入到鏈表最右端。時間

    當內存不足時,將最左端key-value刪除。

相關文章
相關標籤/搜索