Redis 過期刪除鍵策略和記憶體淘汰機制

2021-09-12 03:22:21 字數 1121 閱讀 5027

expire key seconds  //將key的生存時間設定為ttl秒

pexpire key milliseconds  //將key的生成時間設定為ttl毫秒

expireat key timestamp_s  //將key的過期時間設定為timestamp所代表的的秒數的時間戳

pexpireat key timestamp_ms  //將key的過期時間設定為timestamp所代表的的毫秒數的時間戳

ttl key //返回鍵剩餘生存秒數

pttl key //返回鍵剩餘生存毫秒數

persist key //移除鍵的過期時間

定時刪除

在設定key的過期時間的同時,為該key建立乙個定時器,讓定時器在key的過期時間來臨時,對key進行刪除

定期刪除

每隔一段時間執行一次刪除(在redis.conf配置檔案設定hz,1s重新整理的頻率)過期key操作

惰性刪除

key過期的時候不刪除,每次從資料庫獲取key的時候去檢查是否過期,若過期,則刪除,返回null。

定期刪除+惰性刪除

定期刪除:redis 是每隔 100ms隨機抽取一些 key 來檢查和刪除的。

惰性刪除:在你獲取某個 key 的時候,redis 會檢查一下 ,這個 key 如果設定了過期時間那麼是否過期了?如果過期了此時就會刪除,不會給你返回任何東西。

redis 記憶體淘汰機制有以下幾個:

如果資料呈現冪律分布,也就是一部分資料訪問頻率高,一部分資料訪問頻率低,則使用allkeys-lru

如果資料呈現平等分布,也就是所有的資料訪問頻率都相同,則使用allkeys-random

volatile-lru策略和volatile-random策略適合我們將乙個redis例項既應用於快取和又應用於持久化儲存的時候,然而我們也可以通過使用兩個redis例項來達到相同的效果,

將key設定過期時間實際上會消耗更多的記憶體,因此我們建議使用allkeys-lru策略從而更有效率的使用記憶體

Redis 過期鍵刪除策略

當redis伺服器中的資料庫鍵超過過期時間,刪除策略主要為三種 惰性刪除 放任鍵過期不管,但是每次從鍵空間中獲取鍵時,都檢查取得的鍵是否過期,過期的話,刪除該鍵 如果沒有過期,就返回該鍵。定期刪除 每隔一段時間,程式就對資料庫進行一次檢查,刪除裡面的過期鍵。至於要刪除多少過期鍵,以及要檢查多少個資料...

redis過期鍵刪除策略

redis伺服器實際使用的過期鍵刪除策略有兩種 通過配合使用這兩種刪除策略,伺服器可以很好地合理使用cpu時間和避免浪費記憶體空間之間取得平衡。redis 缺省會每秒進行十次過期掃瞄,過期掃瞄不會遍歷過期字典中所有的 key,而是採用了一種簡單的貪心策略。從過期字典中隨機 20 個 key 刪除這 ...

Redis的過期鍵刪除策略

對於redis伺服器來說,記憶體資源非常寶貴,如果一些過期鍵一直不被刪除,就會造成資源浪費,因此我們需要考慮乙個問題 如果乙個鍵過期了,它什麼時候會被刪除呢?常見的刪除策略有以下3種 惰性刪除 放任過期鍵不管,每次從鍵空間中獲取鍵時,檢查該鍵是否過期,如果過期,就刪除該鍵,如果沒有過期,就返回該鍵。...