對於過期的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) 最近最少使用,如果資料最近被訪問過,那麼將來被訪問的機率也更高。
lfu (least frequently used) 最不經常使用,如果乙個資料在最近一段時間內使用次數很少,那麼在將來一段時間內被使用的可能性也很小。
fifo (fist in first out) 先進先出, 如果乙個資料最先進入快取中,則應該最早淘汰掉。
你應該知道的Redis過期鍵和過期策略
如何設定過期鍵 如何取消設定的過期時間 過期鍵的過期策略是怎樣的 rdb aof 和複製對過期鍵的處理又是怎樣的 redis 一共有 4 個命令來設定鍵的生存時間 可以存活多久 或過期時間 什麼時候被刪除 上述四種命令本質上都是通過 pexpireat 命令來實現的。例子 127.0.0.1 637...
Redis的過期策略
我們都知道,redis是key value資料庫,我們可以設定redis中快取的key的過期時間。redis的過期策略就是指當redis中快取的key過期了,redis如何處理。過期策略通常有以下三種 定時過期 每個設定過期時間的key都需要建立乙個定時器,到過期時間就會立即清除。該策略可以立即清除...
redis的過期策略
什麼是redis,為啥用快取?redis是用記憶體當快取的。redis主要是基於記憶體來進行高效能 高併發的讀寫操作的。記憶體是有限的,比如redis就只能用10個g,你一直往裡面寫資料,一直寫一直寫最後10個g都用的差不多了,你繼續寫會發生什麼?當然會乾掉一些的資料了就保留10個g的資料。那red...