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 ...