Redis學習(十五)Redis刪除策略

2021-10-05 08:09:20 字數 1253 閱讀 2141

刪除的是過期資料,設定期限且時間已經到期的資料

ttl key
結果:

如果我們監控每一條資料的時間到期,這樣的守護程序會占用cpu使redis的效能下降,如果我們不處理過期資料,也會導致資料過多占用記憶體導致redis將記憶體撐爆宕機,所以刪除策略的目標並不是要完全的刪除過期資料,而是在刪除過期資料和cpu效能之間尋找一種平衡

定時刪除

惰性刪除

定期刪除

用處理器效能換記憶體空間

當下一次訪問資料時,如果該資料沒有到達過期時間,則返回資料

如果該資料到達過期時間,redis會先刪除該資料,然後返回不存在

拿儲存空間換處理器效能

server.hz

w用來表示每秒執行多少次檢測方法

每個庫隨機挑選w個資料進行檢測,如果超過25%的key過期,則再次迴圈該過程

設定active_expire_cycle_lookups_per_loop為w的值

redis每秒執行server.hz次方法進行檢測過期資料,檢測方法會對所有的庫中expires儲存塊進行檢查並刪除,每個expires中隨機挑選w個資料進行檢測,如果超過25%的key過期,則再次迴圈該過程,如果沒有超過25%的key過期,則到下乙個expires儲存塊進行檢查,檢查時會有current_db欄位對當前處理的expires進行判斷

當redis剩餘記憶體無法不滿足加入資料最低記憶體要求,那麼就會以一定的策略釋放部分記憶體,本方法會反覆執行,當redis確認無法清理記憶體時,則丟擲異常oom(out of memory)

//    最大可使用記憶體

maxmemory

// 每次選取待刪除資料的個數(隨機選取資料的方式作為待檢測資料)

maxmemory-samples

// 刪除策略

maxmemory-policy

volatile-lru(建議): 挑選最近最少使用的資料淘汰(長時間不用的)

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

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

volatile-random: 隨機選擇資料淘汰

allkeys-lru:挑選最近最少使用的資料淘汰(長時間不用的)

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

allkeys-random:隨機選擇資料淘汰

no-enviction: 禁止驅逐資料

Redis學習(二十五)Redis 客戶端連線

在 redis2.4 中,最大連線數是被直接硬編碼在 裡面的,而在2.6版本中這個值變成可配置的。maxclients 的預設值是 10000,你也可以在 redis.conf 中對這個值進行修改。config get maxclients 1 maxclients 2 10000 以下例項我們在服...

十五 Redis 部落格構建

主要功能 使用者賬號 發布文章 在主頁檢視文章 根據分類來檢視文章 使用者賬號 註冊乙個部落格 賬號需要 1.賬號 account 可以包含英文或數字,不能有重複,會被部落格用作唯一的 id 2.密碼。保證賬號的唯一性可以使用之前介 紹過的 uniqueset 類來實現,而儲存使用者資訊則可以使用雜...

Redis 十五 訂閱發布

這個其實很簡單。首先看封裝的redishelper類裡的訂閱方法,這裡支援傳入委託方法。public void subscribe string subchannel,actionhandler null else 再看發布方法 public long publish string channel,...