redis時效過期刪除策略

2022-09-11 08:48:14 字數 2106 閱讀 8190

1

資料刪除策略

2定時刪除

3優點: 節約記憶體,到時就刪除,快速釋放不必要的記憶體占用

4缺點: cpu壓力很大,無論cpu此時負載量多高均占用cpu,會影響redis伺服器響應時間和指令吞吐量

5總結: 用處理器效能換取儲存空間

6惰性刪除

7資料到達過期時間,不做處理,等下次訪問該資料時再刪除

8如果示過期,返回資料

9發現已過期,刪除,返回不存在

10實現方法: 當獲取該資料時會自動呼叫expirefneeded()函式來實現此機制

11優點: 節約cpu效能,發現必須刪除的時候才刪除

12缺點: 記憶體壓力很大,出現長期占用記憶體的資料

13總結: 用儲存空間換取處理器效能

14定期刪除

15redis啟動伺服器初始化時,讀取配置server.hz的值,預設為10

16 每秒鐘執行server.hz次servercron()--->databasescron()--->activeexpirecycle()

17 activeexpirecycle對每個expires[*]逐一進行檢測,每次執行250ms/server.hz

18 對某個expires[*]檢測時,隨機挑選w個key檢測

19如果key超時,刪除key

20 如果一輪中刪除的key的數量》w*25%, 迴圈過程

21 如果一輪中刪除的key的數量<=w*25%,檢查下乙個expires[*],0-15資料庫迴圈

22 w取值=active_expire_cycle_lookups_per_loop屬性值

23 引數current_db用於記錄activeexpirecycle()進入哪個expires[*]執行

24如果activeexpirecycle()執行時間到期,下次從current_db繼續向下執行

2526

週期性輪詢redis庫中的時效笥資料,採用隨機抽取的策略,利用過期資料佔比的方式控制刪除資料

2728

特點1: cpu效能占用設定有峰值,檢測頻度可自定義設定

29特點2: 記憶體壓力不是很大,長期占用記憶體的冷資料會被持續清理

3031

總結: 週期性抽查儲存空間(隨機抽查,重點抽查)

3233

刪除策略比對

34 定時刪除 -- 節約記憶體,無占用 --不分時段占用cpu資源,頻度高

35 惰性刪除 -- 記憶體占用嚴重 --延時執行,cpu利用率高

36 定期刪除 -- 記憶體定期隨機清理 --每秒花費固定的cpu資源維護記憶體

3738

影響資料逐出的相關配置

39檢測易失資料(可能會過期的資料集server.db[i].expires)

40 volatile-lru: 挑選最近最少使用的資料淘汰

41 volatile-lfu: 挑選最近使用次數最少的資料淘汰

42 volatile-ttl: 挑選將要過期的資料淘汰

43 volatile-random: 任意選擇資料淘汰

4445

檢測全庫資料(所有資料集server.db[i].dict)

46 allkeys-lru: 挑選最近最少使用的資料淘汰

47 allkeys-lfu: 挑選最近使用次數最少的資料淘汰

48 allkeys-random: 任意選擇資料淘汰

4950

放棄資料驅逐

51noeviction(驅逐): 禁止驅逐資料(redis4.0中預設策略), 會引發錯誤oom(outofmemory)

52 maxmemory-policy voiatile-lru

Redis 過期刪除策略

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

Redis 過期鍵刪除策略

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

Redis的過期刪除策略

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