金九銀十大廠面試錦集180道(Java基礎+框架+spring全家桶+分散式+微服務+資料庫)
阿新 • • 發佈:2020-10-11
目錄
過期策略
對於過期的key,redis有兩種方式進行刪除:
- 惰性刪除:redis不會主動的刪除過期的key,而是當訪問此key的時候回判斷它是否過期,過期就刪除並返回空。不會掃描過期key,但是佔用記憶體資源。
- 定期刪除:redis每隔一段時間就隨機掃描部分過期key(20個),是過期的key就刪除,過期key佔比大於25%則再次掃描,預設每秒10次。redis配置檔案hz預設是10。為了防止redis因為過期策略卡死,過期掃描的最大時間是25S。
記憶體淘汰
下圖是redis 5.0的配置
- noeviction:當記憶體不足以容納新寫入資料時,新寫入操作會報錯,這個一般沒人用吧,預設的
- allkeys-lru:在鍵空間中,移除最近最少使用的key
- allkeys-random:在鍵空間中,隨機移除某個key
- allkeys-lfu:所有key中,移除最少(最不經常)使用的
- volatile-lru:在設定了過期時間的鍵空間中,移除最近最少沒使用的key
- volatile-lfu:在設定了過期時間的鍵空間中,,移除最少使用的
- volatile-random:當記憶體不足以容納新寫入資料時,在設定了過期時間的鍵空間中,隨機移除某個key
- volatile-ttl:當記憶體不足以容納新寫入資料時,在設定了過期時間的鍵空間中,有更早過期時間的key優先移除
常見的快取演算法
LRU (Least recently used) 最近最少使用,如果資料最近被訪問過,那麼將來被訪問的機率也更高。
FIFO (Fist in first out) 先進先出, 如果一個數據最先進入快取中,則應該最早淘汰掉。