最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解redis刪除策略和淘汰策略

 更新時間:2024年08月31日 10:09:03   作者:柚子餅干  
每隔一段時間就掃描一定數(shù)據(jù)的設(shè)置了過期時間的key,并清除其中已過期的keys,本文主要介紹了深入理解redis刪除策略和淘汰策略,感興趣的可以了解一下

1、redis的刪除策略

Redis 是一種內(nèi)存級數(shù)據(jù)庫,數(shù)據(jù)都存在內(nèi)存中,但是針對于已經(jīng)過期的數(shù)據(jù),reids 不 會立刻刪除只是會存儲在 expires 中,當(dāng)執(zhí)行刪除策略的時候,才會從 expires 中尋找對應(yīng)的數(shù)據(jù)存儲的地址,在存儲空間中找到對應(yīng)的數(shù)據(jù)進(jìn)行刪除。數(shù)據(jù)刪除其實就是內(nèi)存和 CPU 占用之間尋找平衡,CPU 才能去處理事情,針對過期數(shù)據(jù),要進(jìn)行刪除的時候,一般有三種策略 

2、三種刪除策略

 (1)、定時刪除

顧名思義,給Key設(shè)置一個時間,時間到了,定時器任務(wù)立即執(zhí)行刪除,相當(dāng)于消 耗 CPU 來減少內(nèi)存使用,拿時間換空間。

優(yōu)點(diǎn):節(jié)約內(nèi)存,到時就刪除,快速釋放掉不必要的內(nèi)存占用 缺點(diǎn):CPU 壓力大,無論 CPU 此時負(fù)載量多高,都會去占用 CPU 進(jìn)行 key 的刪除 操作,會影響 Redis 服務(wù)器響應(yīng)時間和吞吐量,是一種比較低效的方式 結(jié)論:用 CPU 性能換取內(nèi)存空間,時間換空間

(2)、惰性刪除 

就是說,數(shù)據(jù)到達(dá)過期時間的時候,先不做處理,等到下次訪問數(shù)據(jù)的時候,進(jìn)行訪問, 如未過期,返回數(shù)據(jù),如過期,則刪除。這就相當(dāng)于節(jié)約了 CPU 但占用了內(nèi)存,拿空間換 時間。

優(yōu)點(diǎn):不占用 CPU 節(jié)約 CPU 性能,只在獲取訪問 key 的時候才判斷是否過期,過期 則刪除,只會刪除當(dāng)前獲取的這一個 key,其他的 key 還是保持原樣

缺點(diǎn):內(nèi)存占用大,如果一直沒有獲取它,那么數(shù)據(jù)就會長期占用內(nèi)存空間,當(dāng)有大量 的 key 沒有被使用到,也造成了大量內(nèi)存浪費(fèi),對內(nèi)存數(shù)據(jù)庫來說,也不太友好 結(jié)論:空間換時間

(3)、定期刪除 

前面說的兩種方案 1.時間換空間,2.空間換時間都是兩個極端方法,為避免前面方案帶 來的問題,Redis 引入了定期刪除策略(是他們的一個比較折中的方案)周期性輪詢 Redis 庫中的時效性數(shù)據(jù),采取隨機(jī)抽取的策略,利用過期數(shù)據(jù)占比的方式控制刪除頻度。在 Redis 服務(wù)器初始化時,讀取 server.hz 的值,默認(rèn)值為 10。定時輪詢服務(wù)器,每秒鐘執(zhí)行 server.hz 次 serverCron() 函數(shù)。databaseCron() 在后臺輪詢處理 16 個 redis 數(shù)據(jù)庫的操作,如這里的過期key 的處理activeExpireCycle(),對每個數(shù)據(jù)庫的 expire 空間進(jìn)行檢測,每次執(zhí)行250ms/server.hz 隨機(jī)選取一批 expire 空間的 key(redis 有 16 個數(shù)據(jù)庫,從 0 號數(shù)據(jù)庫開始—15號數(shù)據(jù)庫) 刪除這批 key 中已過期的。如果這批 key 中已過期的占比超過 25%,那么再重復(fù)執(zhí)行步驟一。(循環(huán)到小于 25%結(jié)束當(dāng)前數(shù)據(jù)庫的刪除)如果這批 key 中已過期的占比 ≤ 25%,檢測下一個數(shù)據(jù)庫的 expire 空間(current_db++) 用 info 命令查看相關(guān)配置參數(shù)

 每秒鐘執(zhí)行 hz 次 serverCron(),對服務(wù)器進(jìn)行定時輪詢

3、三種策略對比 

1:定時刪除: 節(jié)約內(nèi)存,無占用, 不分時段占用 CPU 資源, 頻度高,拿時間換空間 

2:惰性刪除: 內(nèi)存占用嚴(yán)重 延時執(zhí)行, CPU 利用率高拿空間換時間

3:定期刪除: 內(nèi)存定期隨機(jī)清理 每秒花費(fèi)固定的 CPU 資源維護(hù)內(nèi)存 隨機(jī)抽查,重點(diǎn)抽查

4、淘汰/逐出策略 

在 Redis 中經(jīng)常會進(jìn)行數(shù)據(jù)的增刪查改操作,那么如果在添加數(shù)據(jù)的時候遇到了內(nèi)存不足,該怎么辦?在前面用的刪除策略可以避免出現(xiàn)這種情況嗎? 實際上,在前面所說的刪除策略,它針對的是 expire 命令進(jìn)行的操作,也就是說那些具有時效性的數(shù)據(jù)(已經(jīng)過期,并且還在占用內(nèi)存的數(shù)據(jù)) 針對那些并沒有過期,或者是內(nèi)存中的數(shù)據(jù)沒有一個帶有有效期,全是永久性數(shù)據(jù),這時候刪除策略就不起作用了,所以這個時候內(nèi)存滿了我們再去插入數(shù)據(jù)到內(nèi)存是怎么做?那就需要用到淘汰策略了。

redis 執(zhí)行命令之前,都會用 freeMemoryIfNeeded()方法,檢測這次內(nèi)存是否充足,如果不滿足加入新數(shù)據(jù),則會執(zhí)行淘汰策略(淘汰未過期的數(shù)據(jù))

(1)、淘汰策略分類

檢測帶有時效性的數(shù)據(jù)進(jìn)行淘汰(一般是有定時,會過期的數(shù)據(jù)的)

volatile-lru:挑選最近最少使用的數(shù)據(jù)淘汰

volatile-lfu:挑選最近使用次數(shù)最少的數(shù)據(jù)淘汰

volatile-ttl:挑選將要過期的數(shù)據(jù)淘汰

volatile-random:任意選擇數(shù)據(jù)淘汰

檢測全庫的數(shù)據(jù)進(jìn)行淘汰

allkeys-lru:挑選最近最少使用的數(shù)據(jù)淘汰

allkeLyRs-lfu:挑選最近使用次數(shù)最少的數(shù)據(jù)淘汰

allkeys-random:任意選擇數(shù)據(jù)淘汰,相當(dāng)于隨機(jī)

到此這篇關(guān)于深入理解redis刪除策略和淘汰策略的文章就介紹到這了,更多相關(guān)redis刪除策略和淘汰策略內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redis中對大Key進(jìn)行處理方式

    Redis中對大Key進(jìn)行處理方式

    這篇文章主要介紹了Redis中對大Key進(jìn)行處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Redis 7持久化RDB和AOF的原理機(jī)制講解(圖文教程)

    Redis 7持久化RDB和AOF的原理機(jī)制講解(圖文教程)

    Redis是一個基于內(nèi)存的數(shù)據(jù)庫,由于內(nèi)存的易失性(斷電后數(shù)據(jù)會丟失),Redis提供了持久化機(jī)制:將內(nèi)存中的數(shù)據(jù)保存到磁盤中,確保數(shù)據(jù)在Redis服務(wù)重啟或崩潰后能夠恢復(fù),通過持久化,可以避免數(shù)據(jù)丟失,提高數(shù)據(jù)的可靠性,Redis提供兩種持久化方式:RDB和AOF
    2026-01-01
  • redis7.4.2單機(jī)配置過程

    redis7.4.2單機(jī)配置過程

    這段文章詳細(xì)介紹了通過源碼編譯安裝Redis的過程,涵蓋了從下載源碼包到卸載Redis的每一步驟,并強(qiáng)調(diào)了實踐中的實用性和重要性性,關(guān)鍵詞包括:源碼編譯、Redis安裝和卸載流程
    2026-05-05
  • 談?wù)凴edis分布式鎖的正確實現(xiàn)方法

    談?wù)凴edis分布式鎖的正確實現(xiàn)方法

    這篇文章主要給大家介紹了關(guān)于Redis分布式鎖的正確實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • AOP?Redis自定義注解實現(xiàn)細(xì)粒度接口IP訪問限制

    AOP?Redis自定義注解實現(xiàn)細(xì)粒度接口IP訪問限制

    這篇文章主要為大家介紹了AOP?Redis自定義注解實現(xiàn)細(xì)粒度接口IP訪問限制,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • 壓縮列表犧牲速度來節(jié)省內(nèi)存,Redis是膨脹了嗎

    壓縮列表犧牲速度來節(jié)省內(nèi)存,Redis是膨脹了嗎

    這篇文章主要給大家解釋了Redis 當(dāng)中的 ziplist(壓縮列表)犧牲速度來節(jié)省內(nèi)存的原因,希望大家能夠喜歡
    2021-02-02
  • redis中key使用冒號分隔的原理小結(jié)

    redis中key使用冒號分隔的原理小結(jié)

    Redis是一種高性能的鍵值對非關(guān)系型數(shù)據(jù)庫,通過redis不同類型命令可以為其中的鍵指定不同的數(shù)據(jù)類型,其中每個鍵的命名規(guī)范通常使用冒號符號分隔字符串,本文主要介紹了redis中key使用冒號分隔的原理小結(jié),感興趣的可以了解一下
    2024-01-01
  • Spring?Boot?整合Redis?實現(xiàn)優(yōu)惠卷秒殺?一人一單功能

    Spring?Boot?整合Redis?實現(xiàn)優(yōu)惠卷秒殺?一人一單功能

    這篇文章主要介紹了Spring?Boot?整合Redis?實現(xiàn)優(yōu)惠卷秒殺?一人一單,在分布式系統(tǒng)下,高并發(fā)的場景下,會出現(xiàn)此類庫存超賣問題,本篇文章介紹了采用樂觀鎖來解決,需要的朋友可以參考下
    2022-09-09
  • 華為歐拉openEuler編譯安裝Redis的實現(xiàn)步驟

    華為歐拉openEuler編譯安裝Redis的實現(xiàn)步驟

    本文主要介紹了華為歐拉openEuler編譯安裝Redis的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Redis分布式鎖使用及說明

    Redis分布式鎖使用及說明

    本文總結(jié)了Redis和Zookeeper在高可用性和高一致性場景下的應(yīng)用,并詳細(xì)介紹了Redis的分布式鎖實現(xiàn)方式,包括使用Lua腳本和續(xù)期機(jī)制,最后,提到了RedLock算法的適用場景和缺點(diǎn)
    2025-01-01

最新評論

光泽县| 固安县| 赣州市| 德化县| 惠安县| 荔波县| 沙田区| 图木舒克市| 忻城县| 同江市| 南江县| 拉孜县| 广元市| 金平| 嵊州市| 东兴市| 凤翔县| 乌拉特中旗| 资源县| 威海市| 灵川县| 小金县| 岢岚县| 肇东市| 汽车| 抚宁县| 辛集市| 三门峡市| 易门县| 北宁市| 侯马市| 固原市| 通榆县| 云阳县| 六安市| 无为县| 灌阳县| 克什克腾旗| 汽车| 疏附县| 韶关市|