Redis的過期策略

2021-10-11 03:11:36 字數 610 閱讀 2480

我們都知道,redis是key-value資料庫,我們可以設定redis中快取的key的過期時間。redis的過期策略就是指當redis中快取的key過期了,redis如何處理。

過期策略通常有以下三種:

定時過期:每個設定過期時間的key都需要建立乙個定時器,到過期時間就會立即清除。該策略可以立即清除過期的資料,對記憶體很友好;但是會占用大量的cpu資源去處理過期的資料,從而影響快取的響應時間和吞吐量。

惰性過期:只有當訪問乙個key時,才會判斷該key是否已過期,過期則清除。該策略可以最大化地節省cpu資源,卻對記憶體非常不友好。極端情況可能出現大量的過期key沒有再次被訪問,從而不會被清除,占用大量記憶體。

定期過期:每隔一定的時間,會掃瞄一定數量的資料庫的expires字典中一定數量的key,並清除其中已過期的key。該策略是前兩者的乙個折中方案。通過調整定時掃瞄的時間間隔和每次掃瞄的限定耗時,可以在不同情況下使得cpu和記憶體資源達到最優的平衡效果。 (expires字典會儲存所有設定了過期時間的key的過期時間資料,其中,key是指向鍵空間中的某個鍵的指標,value是該鍵的毫秒精度的unix時間戳表示的過期時間。鍵空間是指該redis集群中儲存的所有鍵。)。

redis中同時使用了惰性過期和定期過期兩種過期策略。

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的過期時間...

Redis 過期策略

redis 缺省會每秒進行十次過期掃瞄,過期掃瞄不會遍歷過期字典中所有的 key,而是採用了一種簡單的貪心策略。從過期字典中隨機 20 個 key 刪除這 20 個 key 中已經過期的 key 如果過期的 key 比率超過 1 4,那就重複步驟 1 同時,為了保證過期掃瞄不會出現迴圈過度,導致執行...