Redis設定過期時間
我們在set key 的時候,都可以給定一個expire time,就是過期時間,指定這個key 比如說只能存活一個小時,那麼快取到期就會失效
定性刪除:
指的是Redis預設的每隔100ms就會隨機的抽取一些設定了過期時間的key,檢查是否過期,如果過期了就會刪除,但是問題是,定期刪除會導致很多過期的key到了時間沒有被刪除,所有就有了惰性刪除
惰性刪除:
當你獲取某一個key的時候,Redis就會檢查一下,這個key如果設定了過期時間,如果過了過期時間,就會刪除,不會給你任何的返回值。
通過以上的兩種手段結合起來使用,保證過期的key一定會刪除,但是,如果定期刪除漏掉了很多過期的key,然後你也沒有及時的去查,也就沒有走惰性刪除,就會導致大量的過期的key堆積在記憶體之中,導致Redis記憶體塊耗盡。
Redis記憶體淘汰機制
最常用的2中記憶體移除機制
- allkeys-lru:當記憶體不足的時候,不足以容納新寫入資料的時候,在鍵的空間中,移除最近最少使用的key
- allkeys-random:當記憶體不足的時候,不足以容納新寫入的資料的時候,在鍵的空間中,隨機的移除最近很少使用的key