redis的過期刪除策略

2022-08-19 04:57:13 字數 952 閱讀 8185

1.定時刪除

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

優點:保證記憶體被盡快釋放

缺點:1)若過期key很多,刪除這些key會占用很多的cpu時間,在cpu時間緊張的情況下,cpu不能把所有的時間用來做要緊的事兒,還需要去花時間刪除這些key。

2)定時器的建立耗時,若為每乙個設定過期時間的key建立乙個定時器(將會有大量的定時器產生),效能影響嚴重

3)沒人用

2.惰性刪除

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

優點:刪除操作只發生在從資料庫取出key的時候發生,而且只刪除當前key,所以對cpu時間的占用是比較少的,而且此時的刪除是已經到了非做不可的地步.

缺點:若大量的key在超出超時時間後,很久一段時間內,都沒有被獲取過,那麼可能發生記憶體洩露(無用的垃圾占用了大量的記憶體)

3.定期刪除

每隔一段時間執行一次刪除過期key操作

優點:1)通過限制刪除操作的時長和頻率,來減少刪除操作對cpu時間的占用--處理"定時刪除"的缺點

2)定期刪除過期key--處理"惰性刪除"的缺點

缺點:1)在記憶體友好方面,不如"定時刪除"

2)在cpu時間友好方面,不如"惰性刪除"

惰性刪除+定期刪除

惰性刪除流程:在進行get或setnx等操作時,先檢查key是否過期,若過期,刪除key,然後執行相應操作;若沒過期,直接執行相應操作

定期刪除流程:遍歷每個資料庫,檢查當前庫中的指定個數個key(預設是每個庫檢查20個key,注意相當於該迴圈執行20次,迴圈體時下邊的描述),如果當前庫中沒有乙個key設定了過期時間,直接執行下乙個庫的遍歷,

隨機獲取乙個設定了過期時間的key,檢查該key是否過期,如果過期,刪除key,判斷定期刪除操作是否已經達到指定時長,若已經達到,直接退出定期刪除。

Redis 過期刪除策略

過期時間判定 在redis內部,每當我們設定乙個鍵的過期時間時,redis就會將該鍵帶上過期時間存放到乙個過期字典中。當我們查詢乙個鍵時,redis便首先檢查該鍵是否存在過期字典中,如果存在,那就獲取其過期時間。然後將過期時間和當前系統時間進行比對,比系統時間大,那就沒有過期 反之判定該鍵過期。過期...

Redis的過期刪除策略

過期策略 即redis針對過期的key使用的清除策略,策略為 定期刪除 惰性刪除。記憶體淘汰機制 即記憶體占用達到記憶體限制設定值時觸發的redis的淘汰策略來刪除鍵。下面是我對過期刪除策略和記憶體淘汰策略的對比 刪除策略和maxmemory關係 使用客戶端命令config set maxmemor...

Redis 過期鍵刪除策略

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