Redis三種刪除策略

2021-10-05 07:18:57 字數 1218 閱讀 1618

首先我們先說一下redis刪除的是過期資料,而什麼是過期資料呢?過期資料就是設定了有效性的資料到達了過期時間的資料.

ttl指令獲取資料狀態

返回-1:表示永久有效的資料

返回-2:表示已經過期的資料或被刪除的資料或未定義的資料

時效性資料的儲存結構

資料刪除策略的目標

在記憶體占用與cpu占用之間尋找一種平衡,顧此失彼都會造成整體redis效能的下降,甚至引發伺服器宕機或記憶體溢位

定時刪除

優點:節約記憶體,到時就刪,快速釋放掉不必要的記憶體占用

缺點:cpu壓力變大,無論cpu此時負載量多高,均占用cpu,會影響redis伺服器的響應時間和指令吞吐量

一句話:用cpu換記憶體

惰性刪除

優點:節約cpu的效能,發現必須刪除的時候才刪除

確定:長期大量占用記憶體

一句話:記憶體換cpu

定期刪除

引數current_db用於記錄activeexpirecycle()進入哪個expires[*]執行(防止輪詢時把某個expires落下)

如果activeexpirecycle()執行時間到期,下次從current_db繼續向下執行

簡單說就是週期性輪詢redis庫中的有時效性資料,採用隨機抽取的策略,利用過期資料佔比的方式控制刪除頻度

特點1:cpu效能占用設定有峰值,檢測頻度可自定義設定

特點2:記憶體壓力不是很大,長期占用記憶體的冷資料會被持續清理

總結:週期性抽查儲存空間

刪除策略比對

逐出演算法

刪除策略只是侷限於有設定時效性的資料,如果redis中沒有時效性的資料怎麼辦?

redis使用記憶體儲存資料,在執行每乙個命令前,會呼叫freememoryifneeded()檢測記憶體是否充足,如果記憶體不滿足新加入資料的最低儲存要求,redis要臨時刪除一些資料為當前指令清理儲存空間,清理資料的策略成為驅逐演算法.

注意:逐出資料的過程不是100%能夠清理出足夠的可使用的記憶體空間,如果不成功則反覆執行,當對所有資料嘗試完畢後,如果不能達到記憶體清理的要求,就會報錯

reids過期鍵三種刪除策略

redis設計與實現 第二版 我們知道資料庫的過期時間都儲存在過期字典中,又知道了如何根據過期時間去判斷乙個鍵是否過期,現在的問題是 如果乙個鍵過期了,那麼它什麼時候會被刪除呢?這個問題有三種可能的答案,它們分別代表三種不同的 刪除策略 惰性刪除 放任鍵過期不管,但是每次從鍵空間中獲取鍵時,都檢查取...

Redis 三 redis事務與刪除策略

1.3事務 鎖 1.4分布式鎖 2.刪除策略 1.3事務 鎖 1.4分布式鎖 2.刪除策略 redis執行指令過程中,多條連續執行的指令被干擾,打斷,插隊 redis事務就是乙個命令執行的佇列,將一系列預定義命令包裝成乙個整體,當執行是,一次性按照新增順序依次執行,中間不會被打斷或者干擾 乙個佇列中...

Redis刪除策略

目錄 1.過期資料 2.資料刪除策略 2.1 定時刪除 2.2 惰性刪除 2.3 定期刪除 2.4 三種資料刪除策略對比 3.逐出演算法 redis是一種記憶體級資料庫,所有資料均存放在記憶體中,記憶體中的資料可以通過ttl指令獲取其狀態 對於過期資料,redis內部是否真正釋放了其記憶體空間?目標...