Redis緩存過期策略

定期刪除+ 惰性刪除

+ 內存淘汰機制

定期刪除: Redis默認是每隔100ms就隨機抽取一些設置了過期時間的key. 假如redis中有100萬個key, 都設置了過期時間,那麼肯定不會每隔100毫秒就遍歷100萬個key然後刪除過期了的key. 當get某個key的時候, redis會檢測該key有沒有過期, 如果過期,就刪除, 然後返回空.這就是惰性刪除. 但是內存中如果有10萬個key沒有被訪問到, 不可能讓他們長期在內存中消耗內存, 這時候就需要走內存淘汰機制

內存淘汰機制:

  • noeviction:當內存不足以容納新寫入數據時,新寫入操作會報錯,這個一般沒人用吧
  • allkeys-lru:當內存不足以容納新寫入數據時,在鍵空間中,移除最近最少使用的key(這個是最常用的)
  • allkeys-random:當內存不足以容納新寫入數據時,
    在鍵空間中,隨機移除某個key,這個一般沒人用吧
  • volatile-lru:當內存不足以容納新寫入數據時,在設置了過期時間的鍵空間中,移除最近最少使用的key(這個一般不太合適)
  • volatile-random:當內存不足以容納新寫入數據時,在設置了過期時間的鍵空間中,隨機移除某個key
  • volatile-ttl:當內存不足以容納新寫入數據時,在設置了過期時間的鍵空間中,有更早過期時間的key優先移除


分享到:


相關文章: