Redis 快取之三

雨露發表於2018-06-12

Redis設定過期時間

我們在set key 的時候,都可以給定一個expire time,就是過期時間,指定這個key 比如說只能存活一個小時,那麼快取到期就會失效

定性刪除:

  指的是Redis預設的每隔100ms就會隨機的抽取一些設定了過期時間的key,檢查是否過期,如果過期了就會刪除,但是問題是,定期刪除會導致很多過期的key到了時間沒有被刪除,所有就有了惰性刪除

惰性刪除:

  當你獲取某一個key的時候,Redis就會檢查一下,這個key如果設定了過期時間,如果過了過期時間,就會刪除,不會給你任何的返回值。

通過以上的兩種手段結合起來使用,保證過期的key一定會刪除,但是,如果定期刪除漏掉了很多過期的key,然後你也沒有及時的去查,也就沒有走惰性刪除,就會導致大量的過期的key堆積在記憶體之中,導致Redis記憶體塊耗盡。

Redis記憶體淘汰機制

最常用的2中記憶體移除機制

  1. allkeys-lru:當記憶體不足的時候,不足以容納新寫入資料的時候,在鍵的空間中,移除最近最少使用的key
  2. allkeys-random:當記憶體不足的時候,不足以容納新寫入的資料的時候,在鍵的空間中,隨機的移除最近很少使用的key

相關文章