Redis 過期資料怎麼處理

2021-10-23 17:11:37 字數 724 閱讀 2310

在 redis 中,是可以設定過期資料的,redis 提供了兩種的方式,用於刪除過期的資料!

redis 預設 100ms 隨即抽取部分設定過期時間的 key,過期了就刪除。優點是避免長時間的在掃瞄過期 key,缺點是有些過期 key 無法被刪除。

不掃瞄全部 key 的原因是,當設定了過期時間的 key 太多的情況下,會很耗時間,o(n) 的時間複雜度。

如果查詢了某個過期 key,但定期刪除沒有刪除掉,那就將其刪除了。key 沒過期就正常返回。

redis 實現了個近似的 lru

lru(least recently used),即最近最少使用,如何實現乙個 lru:

定期沒有刪除掉,又很久沒有訪問這個 key,因此不會引起惰性刪除,當這樣的資料越來越多的時候,會占用很大的記憶體。

volatile 型別:針對設定了過期時間 key 的資料

allkeys 型別,針對所有的 key,不管有沒有設定過期時間

noeviction,返回錯誤當記憶體限制達到並且客戶端嘗試執行會讓更多記憶體被使用的命令(大部分的寫入指令,但del和幾個例外)

redis 並不是使用真實的 lru,而是一種近似的 lru

處理redis過期資料

可以採用三種方法 定時刪除 定期刪除 惰性刪除 一 定時刪除 寫乙個定時器,將key的過期時間到達時,立刻將鍵刪除 優點 節約記憶體 缺點 增加cpu壓力,影響redis伺服器響應時間和吞吐量 二 定期刪除 activeexpirecycle 函式對每個expires 資料庫 逐一進行檢測 對每個資...

Redis過期資料和刪除策略

因為記憶體有限,有些資料不需要一直在記憶體中,可以設定一些規則,將一些資料設定過期,在記憶體中刪除,當然也不是隨便刪除,也要考慮到cpu的繁忙與空閒,以免出現redis各種命令執行很多,但是正好出現大量過期資料,已造成伺服器宕機 是在記憶體占用與cpu占用之間尋找一種平衡,顧此失彼都會造成redis...

mongodb刪除過期資料

通常,你往某乙個mongo庫中插資料,然後按日輪詢,最終這個資料會越來越多,對於不用的資料需要進行清理。這篇文章主要將如何清理過期資料。舉個例子 你只需要最近2個月的資料,比如今天是20170829,那麼60天之前的資料都可以清理掉。你可以寫乙個crontab任務,然後匯入指令碼,每天執行一次,將6...