Redis 過期鍵刪除策略

2021-10-01 05:12:31 字數 691 閱讀 4733

當redis伺服器中的資料庫鍵超過過期時間,刪除策略主要為三種:

惰性刪除:放任鍵過期不管,但是每次從鍵空間中獲取鍵時,都檢查取得的鍵是否過期,過期的話,刪除該鍵;如果沒有過期,就返回該鍵。

定期刪除:每隔一段時間,程式就對資料庫進行一次檢查,刪除裡面的過期鍵。至於要刪除多少過期鍵,以及要檢查多少個資料庫,則由演算法決定。

定時刪除策略對記憶體是最友好的,通過使用定時器,定時刪除策略可以保證過期鍵會盡可能快地刪除,並釋放過期鍵所占用的記憶體。但是,它對cpu時間是最不友好的。在過期鍵比較多的情況下,刪除過期鍵這一行為可能會占用相當一部分cpu時間,在記憶體不緊張但cpu緊張的情況下,將cpu時間用在刪除和當前任務無關的過期鍵上,無疑會對伺服器的響應時間和吞吐量造成影響。

惰性刪除策略對cpu時間來說是最友好的。程式只會取出鍵時才對鍵進行過期檢查,這可以保證刪除過期鍵的操作只會在非做不可的情況下進行,並且刪除的目標僅限於當前處理的鍵,這個策略不會在刪除其他無關的過期鍵上花費任何cpu時間。缺點是對記憶體最不友好。如果乙個鍵已經過期,而這個鍵又仍然保留在資料庫中,那麼只要這個過期不刪除,它所占用的記憶體就不會被釋放。

定期刪除想要綜合定時刪除和惰性刪除的優劣,是一種整合和折中。實施辦法為:

定期刪除的難點在於確定刪除操作執行的時長和頻率。

合理地設定刪除操作的執行時長和執行頻率是定期刪除策略的重點。

redis過期鍵刪除策略

redis伺服器實際使用的過期鍵刪除策略有兩種 通過配合使用這兩種刪除策略,伺服器可以很好地合理使用cpu時間和避免浪費記憶體空間之間取得平衡。redis 缺省會每秒進行十次過期掃瞄,過期掃瞄不會遍歷過期字典中所有的 key,而是採用了一種簡單的貪心策略。從過期字典中隨機 20 個 key 刪除這 ...

Redis的過期鍵刪除策略

對於redis伺服器來說,記憶體資源非常寶貴,如果一些過期鍵一直不被刪除,就會造成資源浪費,因此我們需要考慮乙個問題 如果乙個鍵過期了,它什麼時候會被刪除呢?常見的刪除策略有以下3種 惰性刪除 放任過期鍵不管,每次從鍵空間中獲取鍵時,檢查該鍵是否過期,如果過期,就刪除該鍵,如果沒有過期,就返回該鍵。...

Redis過期鍵刪除策略及淘汰策略

redis的所有鍵都可以設定過期策略,redis的每個設定了過期時間的key都會被放在乙個獨立的字典中,用於遍歷刪除。1.先區分兩個概念,被動刪除與主動刪除 1 被動刪除 key再被操作時,redis主動檢查key是否過期,過期則刪除 優劣 對cpu友好,只有cpu在被操作時刪除,不浪費cpu時間 ...