這篇文章主要介紹了Redis刪除策略和逐出策略是什么,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
創新互聯10多年成都定制網頁設計服務;為您提供網站建設,網站制作,網頁設計及高端網站定制服務,成都定制網頁設計及推廣,對成都假山制作等多個方面擁有豐富的網站制作經驗的網站建設公司。先來看三個key值,分別為sex、name、age。
這三個值設置的指令為 set name kaka setex age 100 24 setex sex 10 1
在redis中我們可以使用ttl來獲取某個key的狀態,下面我們來使用ttl
分別獲取一下上邊name、age、sex的狀態
可以看到出來了三個值,分別為 -1 775 -2
那么這三個值給出的信息是什么呢!
setex age 1000 24
,表示為剩余有效時間定時刪除就是寫一個定時器,然后當key的時間過期后,定時器任務立即對過期的key進行刪除
優點:可想而知key到期就刪,肯定對內存時最友好的,節約內存
缺點:redis單線程的特性是所有的命令都在按照一定的順序進行執行。key值到期就刪cpu的壓力就會變大,會直接影響到redis服務器響應時間和IO
定時刪除就是用時間來換取空間
當執行完定時刪除后,key值對應的數據會被刪除,同時在過期的內存區里邊也會直接刪除。
在來看這個圖當key值過期后不會直接刪除,那是什么時候刪除呢!繼續往下看
當我們使用惰性刪除時,數據到期了也不會自動刪除,那么他的刪除方式是,在下一次在獲取這個key值時,會做一個判斷,判斷這個key是否過期,如果過期了在執行刪除。
也就是說當再次執行get name時 會走一個函數expirelfNeeded()
這個函數就是判斷此key是否過期的。過期的返回nil,然后從內存在進行刪除
優點:會減少一定的CPU性能,只有到必須要刪的時候才會刪除
缺點:那肯定就是內存壓力大了,例如一些熱點新聞,熱點過了就基本沒人訪問了,沒有人訪問這個key就一直存在,就會出現長期占用一定的內存空間
也就說這種方式是用空間換時間
在上文中我們提及了倆種刪除方式,一種是定時刪除,一種是惰性刪除。一個是用空間換時間。一個是用時間換空間。倆種方案都是比較極端的方式。那么接下來我們在來看看定期刪除的實現方案。
先來看一下redis的存儲空間,一共有默認為16個,在redis.conf里邊有一個配置參數database這個參數控制的。每個數據庫都有自己的過期分區,里邊存儲就是數據地址 和 數據過期時間。
實現方式
redis在啟動時,會取讀取server下的hz的值,默認為10。這個值直接在終端使用info server
就可以查看的到
然后會每秒鐘執行server下hz次 進行serverCron()輪詢
繼續使用databasesCron對redis的16個庫進行挨個訪問信息
訪問時候會再執行activeExpireCycel對每個expires[*]逐一進行檢測,每個執行的時間為250ms / server hz這個參數
在對每個expirs[*]逐一檢測時,會隨機拿出ACTIVE_EXPIRE_CYCLE_SLOW_TIME_PERC個可以進行檢測
那么現在問題來了,我們的250ms / hz這個時間執行完了,但是把expires的16個數據庫沒有循環完怎么辦呢! 下次來在循環那個庫呢! 其實這個值是有存的,就是current_db這個值。這個值會記錄activeExpireCycel 下次進入那個expires[*]執行特點1:CPU使用沒有高峰值,檢測頻率自定義設置
特點2:內存壓力不會很大, 長時間占用的內存會被持續的清理
在上文中我們說了三種刪除策略,但是這三種策略都是相對于設置了有效期的key才會有效。
那現在我們的redis使用的內存不足了,就會使用逐出策略來保證redis的正常使用。
redis在每次執行命令前會調用freeMemorylfNeeded()檢測內存是否充足,當不充足時就會清理一些key,這種清除數據的策略稱為逐出策略。
redis大可使用內存的參數為:maxmemory 默認為0 指的是占用物理內存的比例 一般設置50%就可以了
每次選取待刪除key的個數:maxmemory-samples
刪除策略:maxmemory-policy
「下面我們來著重說明刪除策略」
接下來看一幅圖
9s就是現在的時間
距離9s最長的一個key就是age
使用次數最少的就是gender這個key
如果按照volatile-lru就會把age刪除掉
如果按照volatile-lfu就會把gender刪除掉
檢測全部數據
放棄數據驅逐
感謝你能夠認真閱讀完這篇文章,希望小編分享Redis刪除策略和逐出策略是什么內容對大家有幫助,同時也希望大家多多支持創新互聯,關注創新互聯-成都網站建設公司行業資訊頻道,遇到問題就找創新互聯,詳細的解決方法等著你來學習!
文章標題:Redis刪除策略和逐出策略是什么-創新互聯
網頁鏈接:http://m.newbst.com/article44/dgipee.html
成都網站建設公司_創新互聯,為您提供企業網站制作、網站營銷、品牌網站制作、定制網站、虛擬主機、ChatGPT
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯