Redis 資料過期策略

2022-10-10 15:57:11 字數 1353 閱讀 6020

通過expire key seconds命令來設定資料的過期時間。返回1表明設定成功,返回0表明設定失敗。在key上設定了過期時間後key將在指定的秒數後被自動刪除。

expire : 過期;期滿

注: flushall 清空資料庫 ; name不存在,設定過期時間失敗

過期時間的其他相關命令:   

通過ttl key命令來檢視資料的過期時間

通過persist key命令來可以清除資料的過期時間

persist :存留;保持

注: 返回 -1 表示永不過期

redis使用懶惰刪除+定期刪除相結合的方式處理過期的key。

redis key過期的方式有三種:

1) 定期刪除策略

redis 啟用乙個定時器定時監視所有的 key,判斷key是否過期,過期的話就刪除。這種策略可以保證過期的 key 最終都會被刪除,但是也存在嚴重的缺點:每次都遍歷記憶體中所有的資料,非常消耗 cpu 資源,並且當 key 已過期,但是定時器還處於未喚起狀態,這段時間內 key 仍然可以用。

2) 惰性刪除策略

在獲取 key 時,先判斷 key 是否過期,如果過期則刪除。這種方式存在乙個缺點:如果這個 key 一直未被使用,那麼它一直在記憶體中,其實它已經過期了,會浪費大量的空間。

3) 主動清理策略 (淘汰策略)

淘汰策略分為:

當記憶體不足以容納新寫入資料時,新寫入操作會報錯。(redis 預設策略)

當記憶體不足以容納新寫入資料時,在鍵空間中,移除最近最少使用的 key。(lru推薦使用)

當記憶體不足以容納新寫入資料時,在鍵空間中,隨機移除某個 key。

當記憶體不足以容納新寫入資料時,在設定了過期時間的鍵空間中,移除最近最少使用的 key。這種情況一般是把 redis 既當快取,又做持久化儲存的時候才用。

當記憶體不足以容納新寫入資料時,在設定了過期時間的鍵空間中,隨機移除某個 key。

當記憶體不足以容納新寫入資料時,在設定了過期時間的鍵空間中,有更早過期時間的 key 優先移除。

Redis資料過期策略

如果有些key從不被訪問到,那麼這些將得不到清理 1.配置redis.conf 的hz選項 hz is 10 by default 2.配置redis.conf的maxmemory最大值,當已用記憶體超過maxmemory限定時,就會觸發主動清理策略。redis is not configured ...

redis過期策略

1 noeviction 一旦記憶體滿則返回錯誤 2 allkeys lru 對所有的key進行lru 3 volatile lru 只對設定了過期的key進行lru 預設的方式 4 allkeys random 隨機剔除乙個key 5 volatile random 對設定過期的key進行隨機剔除...

Redis過期策略

1,設定過期時間 expire key time 單位為秒 setex string key,int seconds,string value 字串獨有的方式 注意 過期key的判定 檢查給定key是否存在於過期字典,如果存在,那麼取得key的過期時間。檢查當前unix時間戳是否大於key的過期時間...