世界上並沒有完美的程式,但是我們並不因此而沮喪,因為寫程式就是乙個不斷追求完美的過程。快取過期以後如何刪除呢?第一,主動刪除,即後台建立定時任務,每隔一段時間遍歷所有有過期時間的快取,判斷是否過期,如果過期則進行刪除;第二,被動刪除,即每次取資料前判斷一下所取的資料是否有過期時間設定,如果有,判斷其是否過期,如果過期則刪除並返回null;第三,根據一定的策略刪除,比如lru或lfu演算法,當記憶體空間不足時,根據lru或lfu演算法刪除過期的快取。
第一種定時刪除,對於記憶體空間是友好的,但是對於cpu是不友好的,當過期鍵很多,記憶體空間不緊張而cpu時間緊張的情況下,仍然執行定時刪除,會影響伺服器的響應時間和吞吐量。
第二種惰性刪除,對於cpu是有好多的,但是對記憶體是不友好的,如果記憶體中有大量過期鍵,而過期鍵又長時間不被訪問,那麼會一直存在於記憶體中而不被釋放,會造成嚴重的記憶體洩漏。
第三種定期刪除,綜合了前兩者的優點,每隔一段時間執行一次過期刪除操作,並通過限制刪除操作執行時長和頻率來減少操作對cpu的影響,除此之外,通過定期刪除過期鍵,有效的減少由於過期鍵帶來的記憶體浪費。但是難點是,確定過期鍵刪除的時長和頻率。
Redis 過期刪除策略
過期時間判定 在redis內部,每當我們設定乙個鍵的過期時間時,redis就會將該鍵帶上過期時間存放到乙個過期字典中。當我們查詢乙個鍵時,redis便首先檢查該鍵是否存在過期字典中,如果存在,那就獲取其過期時間。然後將過期時間和當前系統時間進行比對,比系統時間大,那就沒有過期 反之判定該鍵過期。過期...
Redis的過期刪除策略
過期策略 即redis針對過期的key使用的清除策略,策略為 定期刪除 惰性刪除。記憶體淘汰機制 即記憶體占用達到記憶體限制設定值時觸發的redis的淘汰策略來刪除鍵。下面是我對過期刪除策略和記憶體淘汰策略的對比 刪除策略和maxmemory關係 使用客戶端命令config set maxmemor...
redis的過期刪除策略
1.定時刪除 在設定key的過期時間的同時,為該key建立乙個定時器,讓定時器在key的過期時間來臨時,對key進行刪除 優點 保證記憶體被盡快釋放 缺點 1 若過期key很多,刪除這些key會占用很多的cpu時間,在cpu時間緊張的情況下,cpu不能把所有的時間用來做要緊的事兒,還需要去花時間刪除...