redis過期策略和記憶體淘汰機制

2021-10-17 11:14:11 字數 1108 閱讀 6670

兩種方式:

惰性刪除:當訪問key時,再判斷key是否過期。過期則刪除並返回null。

定期刪除:周期性地隨機測試一批設定了過期時間的key並處理。過期則刪除。

#redis.conf配置執行週期,預設每秒10次

hz 10

定期刪除演算法:

redis配置hz定義了servercron任務的執行週期,預設是10,代表每秒執行10次。

每次清理過期key不超過cpu時間的25%(250ms)。比如hz為10,則一次清理時間最大25ms。

清理時依次遍歷所有db。

從db中隨機取20個key,若過期,則刪除。若有5個以上key過期,則重複執行。

在清理過程中,若達到了25%cpu時間,則退出清理過程。

當redis記憶體超過最大允許記憶體後,會觸發記憶體淘汰機制。

#redis.conf配置記憶體淘汰機制

maxmemory-policy noeviction

4.0版本之前有6種:

noeviction不淘汰任何資料,記憶體不足時再新增會報錯。(redis預設)

volatile-lru淘汰設定了過期時間的鍵值中最久未使用的key。

volatile-random隨機淘汰了設定過期時間的任意鍵值。

volatile-ttl優先淘汰更短過期時間的鍵值。

allkeys-lru淘汰整個鍵值中最久未使用的key。

allkeys-random隨機淘汰任意鍵值。

4.0之後新加2種:

volatile-lfu淘汰設定了過期時間的key中最少使用的鍵值。

allkeys-lfu淘汰整個鍵值中最少使用的鍵值。

Redis的過期策略和記憶體淘汰策略

redis的過期策略 我們都知道,redis是key value資料庫,我們可以設定redis中快取的key的過期時間。redis的過期策略就是指當redis中快取的key過期了,redis如何處理。過期策略通常有以下三種 定時過期 每個設定過期時間的key都需要建立乙個定時器,到過期時間就會立即清...

Redis的過期策略和記憶體淘汰策略

在redis中我們對於鍵可以通過expire key time設定生存時間,當time時間過後鍵就會過期,redis會採用過期策略對過期的鍵進行刪除。過期策略主要是在cpu和記憶體之間進行權衡。可以將cpu的處理效率作為側重點進行選擇策略,也可以將記憶體的容量作為側重點進行選擇策略實際上redis採...

Redis的過期策略和記憶體淘汰策略

我們都知道,redis是key value資料庫,我們可以設定redis中快取的key的過期時間。redis的過期策略就是指當redis中快取的key過期了,redis如何處理。過期策略通常有以下三種 redis中同時使用了惰性過期和定期過期兩種過期策略。redis的記憶體淘汰策略是指在redis的...