1. 程式人生 > 實用技巧 >金九銀十大廠面試錦集180道(Java基礎+框架+spring全家桶+分散式+微服務+資料庫)

金九銀十大廠面試錦集180道(Java基礎+框架+spring全家桶+分散式+微服務+資料庫)

目錄

過期策略

對於過期的key,redis有兩種方式進行刪除:

  1. 惰性刪除:redis不會主動的刪除過期的key,而是當訪問此key的時候回判斷它是否過期,過期就刪除並返回空。不會掃描過期key,但是佔用記憶體資源。
  2. 定期刪除:redis每隔一段時間就隨機掃描部分過期key(20個),是過期的key就刪除,過期key佔比大於25%則再次掃描,預設每秒10次。redis配置檔案hz預設是10。為了防止redis因為過期策略卡死,過期掃描的最大時間是25S。

記憶體淘汰

下圖是redis 5.0的配置
在這裡插入圖片描述

  1. noeviction:當記憶體不足以容納新寫入資料時,新寫入操作會報錯,這個一般沒人用吧,預設的
  2. allkeys-lru:在鍵空間中,移除最近最少使用的key
  3. allkeys-random:在鍵空間中,隨機移除某個key
  4. allkeys-lfu:所有key中,移除最少(最不經常)使用的
  5. volatile-lru:在設定了過期時間的鍵空間中,移除最近最少沒使用的key
  6. volatile-lfu:在設定了過期時間的鍵空間中,,移除最少使用的
  7. volatile-random:當記憶體不足以容納新寫入資料時,在設定了過期時間的鍵空間中,隨機移除某個key
  8. volatile-ttl:當記憶體不足以容納新寫入資料時,在設定了過期時間的鍵空間中,有更早過期時間的key優先移除

常見的快取演算法

LRU (Least recently used) 最近最少使用,如果資料最近被訪問過,那麼將來被訪問的機率也更高。

LFU (Least frequently used) 最不經常使用,如果一個數據在最近一段時間內使用次數很少,那麼在將來一段時間內被使用的可能性也很小。
FIFO (Fist in first out) 先進先出, 如果一個數據最先進入快取中,則應該最早淘汰掉。