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

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

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

1、redis的刪除策略

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

2、三種刪除策略

 (1)、定時(shí)刪除

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

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

(2)、惰性刪除 

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

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

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

(3)、定期刪除 

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

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

3、三種策略對比 

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

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

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

4、淘汰/逐出策略 

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

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

(1)、淘汰策略分類

檢測帶有時(shí)效性的數(shù)據(jù)進(jìn)行淘汰(一般是有定時(shí),會(huì)過期的數(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)行處理方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Redis 7持久化RDB和AOF的原理機(jī)制講解(圖文教程)

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

    Redis是一個(gè)基于內(nèi)存的數(shù)據(jù)庫,由于內(nèi)存的易失性(斷電后數(shù)據(jù)會(huì)丟失),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)了實(shí)踐中的實(shí)用性和重要性性,關(guān)鍵詞包括:源碼編譯、Redis安裝和卸載流程
    2026-05-05
  • 談?wù)凴edis分布式鎖的正確實(shí)現(xiàn)方法

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

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

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

    這篇文章主要為大家介紹了AOP?Redis自定義注解實(shí)現(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ù)類型,其中每個(gè)鍵的命名規(guī)范通常使用冒號符號分隔字符串,本文主要介紹了redis中key使用冒號分隔的原理小結(jié),感興趣的可以了解一下
    2024-01-01
  • Spring?Boot?整合Redis?實(shí)現(xiàn)優(yōu)惠卷秒殺?一人一單功能

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

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

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

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

    Redis分布式鎖使用及說明

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

最新評論

十堰市| 祁阳县| 田阳县| 自贡市| 灵武市| 乌苏市| 阜平县| 应用必备| 淮南市| 河南省| 新巴尔虎右旗| 梧州市| 昆明市| 沁水县| 华容县| 抚顺县| 福建省| 朔州市| 胶南市| 游戏| 南通市| 太湖县| 辰溪县| 南岸区| 平罗县| 鹤庆县| 大关县| 中超| 仲巴县| 三门县| 凤庆县| 东港市| 甘德县| 仁化县| 厦门市| 彩票| 临桂县| 内黄县| 道真| 昌江| 宁南县|