Redis過期策略

2021-09-12 20:21:54 字數 852 閱讀 4334

1,設定過期時間

expire key time (單位為秒)

setex(string key, int seconds, string value) -- 字串獨有的方式

注意:過期key的判定

檢查給定key是否存在於過期字典,如果存在,那麼取得key的過期時間。

檢查當前unix時間戳是否大於key的過期時間,如果是,keyjin

2,三種過期策略

優點:對記憶體友好,保證記憶體被盡快釋放

缺點:對cpu時間最不友好。若過期key過多時,刪除過期key會占用很多的cpu時間,(當記憶體不緊張而cpu緊張時)會對                   伺服器的響應時間和吞吐量造成影響。

惰性刪除:放任key過期不管,但是每次去資料庫獲取key的時候去檢查是否過期,若過期,則刪除,返回null.

優點:對cpu時間友好。程式只會在取key的時候對key進行過期檢查,這可以保證刪除過期key的操作只會在非做不可的情況下             進行(如果此時還不刪除的話,我們就會獲取到了已經過期的key),並且刪除的目標僅限於當前處理的key。

缺點:若大量的過期的key沒有再次被訪問,從而不會被清除,這樣會占用大量記憶體,而且伺服器不會自己去釋放它們。

定期刪除:每隔一段時間,程式就對資料庫進行一次檢查,刪除裡面過期的key。

定時刪除占用太多cpu時間,影響伺服器的響應時間和吞吐量

惰性刪除浪費太多記憶體,有記憶體洩漏的危險

定期刪除就是前兩種策略的折中。

伺服器必須根據情況,合理地設定刪除操作的執行時長和執行頻率。

redis實際實現的是惰性刪除和定期刪除兩種策略。

redis過期策略

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

Redis 過期策略

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

redis過期策略

expire key second 這是常用的,以秒為單位 pexpire key millisecond 單位是毫秒 expireat key timestamp 將key的過期時間設定為timestamp代表的秒數的時間戳 pexpireat key millisecond timestamp ...