過期鍵的刪除策略

2021-10-07 06:36:56 字數 847 閱讀 3716

前言

首先要說明的是,redis的記憶體淘汰策略與redis的過期鍵刪除策略並不完全相同,前者是在redis記憶體使用超過一定值的時候使用的淘汰策略;而後者是通過定期刪除+惰性刪除兩者結合的方式進行記憶體淘汰的。

快取,不是儲存,無法保證以前設定的快取絕對存在。因為快取容量是有上限的,即使set值的時候不設定過期時間,在記憶體不夠的時候,也是會根據記憶體淘汰策略刪除一些資料的。

在開始之前請思考:過期後會立即釋放記憶體嗎?

設定過期時間

注意

過期策略

定時刪除:在設定key的過期時間的同時,為該key建立乙個定時器,讓定時器在key的過期時間來臨時,對key進行刪除。

惰性刪除:key過期的時候不刪除,每次從資料庫獲取key的時候去檢查是否過期,若過期,則刪除,返回null。

定期刪除:每隔一段時間執行一次刪除過期key操作。該策略是上述兩種策略的折中方案,需要通過實際情況,來設定刪除操作的執行時長和頻率。

redis採用的過期策略

惰性刪除+定期刪除

定期刪除流程

注意:對於定期刪除,在程式中有乙個全域性變數current_db來記錄下乙個將要遍歷的庫,假設有16個庫,我們這一次定期刪除遍歷了10個,那此時的current_db就是11,下一次定期刪除就從第11個庫開始遍歷,假設current_db等於15了,那麼之後遍歷就再從0號庫開始(此時current_db==0)

rdb和aof對過期key的處理

rdb對過期key的處理

從rdb檔案恢復資料到記憶體資料庫

aof對過期key的處理

Redis 過期鍵刪除策略

當redis伺服器中的資料庫鍵超過過期時間,刪除策略主要為三種 惰性刪除 放任鍵過期不管,但是每次從鍵空間中獲取鍵時,都檢查取得的鍵是否過期,過期的話,刪除該鍵 如果沒有過期,就返回該鍵。定期刪除 每隔一段時間,程式就對資料庫進行一次檢查,刪除裡面的過期鍵。至於要刪除多少過期鍵,以及要檢查多少個資料...

redis過期鍵刪除策略

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

Redis的過期鍵刪除策略

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