Redis 鍵(KEY)過期策略

2021-10-08 03:08:44 字數 607 閱讀 5420

那你有沒有想過乙個問題,redis裡面如果有大量的key,怎樣才能高效的找出

過期的key並將其刪除呢,難道是遍歷每乙個key嗎?假如同一時期過期的key非常多,redis會不會因為一直處理過期事件,而導致讀寫指令的卡頓。

這裡說明一下,redis是單執行緒的,所以一些耗時的操作會導致redis卡頓,比如當redis資料量特別大的時候,使用keys * 命令列出所有的key。

實際上redis使用懶惰刪除+定期刪除相結合的方式處理過期的key。

這種方式看似很完美,在訪問的時候檢查key的過期時間,不會占用太多的額外cpu資源。但是如果乙個key已經過期了,如果長時間沒有被訪問,那麼這個key就會一直存留在記憶體之中,嚴重消耗了記憶體資源。

定期刪除的原理是,redis會將所有設定了過期時間的key放入乙個字典中,然後每隔一段時間從字典中隨機一些key檢查過期時間並刪除已過期的key。

redis預設每秒進行10次過期掃瞄:

從過期字典中隨機20個key

刪除這20個key中已過期的

如果超過25%的key過期,則重複第一步

同時,為了保證不出現迴圈過度的情況,redis還設定了掃瞄的時間上限,預設不會超過25ms。

redis過期key的清理策略

一,有三種不同的刪除策略 2 惰性清理。鍵過期了就過期了,不管。當讀 寫乙個已經過期的key時,會觸發惰性刪除策略,直接刪除掉這個過期key 3 定期清理。每隔一段時間,對expires字典進行檢查,刪除裡面的過期鍵。二,詳細說明三種清理方式的優劣 1 立即清理 因為刪除操作會占用cpu的時間,如果...

Redis的key過期處理策略

redis中有三種處理策略 定時刪除 惰性刪除和定期刪除。定時刪除 在設定鍵的過期時間的時候建立乙個定時器,當過期時間到的時候立馬執行刪除操作。不過這種處理方式是即時的,不管這個時間內有多少過期鍵,不管伺服器現在的執行狀況,都會立馬執行,所以對cpu不是很友好。惰性刪除 惰性刪除策略不會在鍵過期的時...

Redis 鍵過期處理策略

redis可以給乙個key設定過期時間,當key過期以後,並不會馬上自動釋放。redis對於過期鍵的處理,分為被動刪除和主動刪除兩種方式。1.被動刪除 當客戶端訪問到乙個已經過期的鍵但尚未刪除,redis就會主動把它刪除。2.主動刪除 redis每秒會迴圈10次以下操作 隨機抽取20個具有過期時間的...