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

Redis過期鍵刪除策略解讀

 更新時(shí)間:2025年01月15日 11:13:47   作者:Recently 祝祝  
Redis通過惰性刪除策略和定期刪除策略來管理過期鍵,惰性刪除策略在鍵被訪問時(shí)檢查是否過期并刪除,節(jié)省CPU開銷但可能導(dǎo)致過期鍵滯留,定期刪除策略定期掃描并刪除過期鍵,保證數(shù)據(jù)庫干凈但可能影響性能,Redis默認(rèn)同時(shí)使用兩種策略

1.Redis使用兩種不同的策略來刪除過期鍵,分別是惰性刪除策略和定期刪除策略

1.1惰性刪除策略

當(dāng)一個(gè)過期鍵被訪問時(shí),Redis會(huì)檢查這個(gè)鍵是否過期。如果過期,就會(huì)立即刪除。如果沒有過期,Redis會(huì)像處理普通鍵一樣繼續(xù)處理它。這種方式被稱為惰性刪除,因?yàn)镽edis只會(huì)在需要訪問一個(gè)鍵時(shí)才會(huì)檢查它是否過期,并在發(fā)現(xiàn)它過期后刪除它。這種策略的好處是能夠節(jié)省刪除鍵所帶來的 CPU 開銷,因?yàn)?Redis 只有在有需要時(shí)才會(huì)刪除鍵

1.2定期刪除策略

Redis也使用一種定期刪除策略來刪除過期鍵。在這種策略下,Redis會(huì)每隔一段時(shí)間掃描數(shù)據(jù)庫,查找所有已過期的鍵并將它們刪除。這種方式稱為定期刪除,因?yàn)镽edis會(huì)定期執(zhí)行這個(gè)操作。這種策略的好處是能夠保證 Redis 數(shù)據(jù)庫中過期的鍵能夠及時(shí)被刪除,從而避免浪費(fèi)空間。

1.3策略小結(jié)

Redis 的默認(rèn)配置是同時(shí)使用惰性刪除和定期刪除兩種策略。當(dāng) Redis 同時(shí)使用這兩種策略時(shí),惰性刪除策略能夠節(jié)省 CPU 開銷,定期刪除策略能夠保證過期鍵及時(shí)被刪除。

在一些特殊情況下,我們可能需要調(diào)整 Redis 的刪除策略,比如對(duì)于一些不太重要的數(shù)據(jù),我們可以只使用惰性刪除策略來降低 Redis 的 CPU 開銷,對(duì)于一些比較重要的數(shù)據(jù),我們可以只使用定期刪除策略來保證數(shù)據(jù)的正確性。這些調(diào)整可以通過 Redis 的配置參數(shù)來實(shí)現(xiàn)。

惰性刪除策略可以讓Redis更高效地使用內(nèi)存,因?yàn)樗挥性谛枰L問一個(gè)鍵時(shí)才會(huì)檢查它是否過期。但是,它可能會(huì)導(dǎo)致過期鍵長時(shí)間滯留在內(nèi)存中,直到下次被訪問。定期刪除策略則可以保證過期鍵及時(shí)被刪除,但可能會(huì)對(duì)性能產(chǎn)生一定的影響,因?yàn)樗枰芷谛缘乇闅v整個(gè)數(shù)據(jù)庫。為了平衡內(nèi)存使用和性能,Redis通常會(huì)同時(shí)使用這兩種策略。

2.惰性刪除策略與定期刪除策略的使用

Redis 的惰性刪除策略和定期刪除策略默認(rèn)都是開啟的,所以在通常情況下,我們不需要做任何特殊的配置即可使用這兩種策略。

如果你想要對(duì) Redis 的刪除策略進(jìn)行調(diào)整,可以通過以下方式進(jìn)行配置:

惰性刪除策略

Redis 的惰性刪除策略是默認(rèn)開啟的,如果你想要關(guān)閉惰性刪除,可以在 Redis 的配置文件中將以下參數(shù)設(shè)置為 no:

# 是否啟用惰性刪除
# 如果設(shè)置為 no,則 Redis 將不使用惰性刪除策略
# 默認(rèn)為 yes
lazyfree-lazy-eviction no

定期刪除策略

Redis 的定期刪除策略是通過一個(gè)配置參數(shù)來控制的,這個(gè)參數(shù)默認(rèn)值為 10 秒鐘,即 Redis 每隔 10 秒鐘會(huì)檢查一次過期鍵并刪除過期鍵。如果你想要改變這個(gè)值,可以在 Redis 的配置文件中修改以下參數(shù):

# 設(shè)置 Redis 定期刪除策略的周期
# 默認(rèn)為 10 秒鐘
# 單位為秒
hz 100

在上面的配置中,我們將 Redis 定期刪除策略的周期設(shè)置為 100 秒,即 Redis 每隔 100 秒鐘會(huì)檢查一次過期鍵并刪除過期鍵。

需要注意的是,當(dāng) Redis 同時(shí)使用惰性刪除和定期刪除兩種策略時(shí),惰性刪除策略會(huì)優(yōu)先執(zhí)行,即 Redis 只有在有客戶端請(qǐng)求鍵時(shí)才會(huì)檢查鍵是否過期,定期刪除策略只有在惰性刪除策略無法滿足時(shí)才會(huì)起作用。

3.為什么Redis中會(huì)導(dǎo)致讀取到過期數(shù)據(jù)

雖然定期刪除策略可以釋放一些內(nèi)存,但是,Redis 為了避免過多刪除操作對(duì)性能產(chǎn)生影響,每次隨機(jī)檢查數(shù)據(jù)的數(shù)量并不多。如果過期數(shù)據(jù)很多,并且一直沒有再被訪問的話,這些數(shù)據(jù)就會(huì)留存在 Redis 實(shí)例中。業(yè)務(wù)應(yīng)用之所以會(huì)讀到過期數(shù)據(jù),這些留存數(shù)據(jù)就是一個(gè)重要因素。

惰性刪除策略實(shí)現(xiàn)后,數(shù)據(jù)只有被再次訪問時(shí),才會(huì)被實(shí)際刪除。如果客戶端從主庫上讀取留存的過期數(shù)據(jù),主庫會(huì)觸發(fā)刪除操作,此時(shí),客戶端并不會(huì)讀到過期數(shù)據(jù)。但是,從庫本身不會(huì)執(zhí)行刪除操作,如果客戶端在從庫中訪問留存的過期數(shù)據(jù),從庫并不會(huì)觸發(fā)數(shù)據(jù)刪除。

4.從庫會(huì)給客戶端返回過期數(shù)據(jù)嗎?

Redis3.2版本之前,從庫會(huì)返回過期數(shù)據(jù)。Redis3.2之后從庫不會(huì)返回過期數(shù)據(jù),會(huì)返回空值,但是還是有可能會(huì)讀到。

如果使用的是 Redis 3.2 之前的版本,那么,從庫在服務(wù)讀請(qǐng)求時(shí),并不會(huì)判斷數(shù)據(jù)是否過期,而是會(huì)返回過期數(shù)據(jù)。在 3.2 版本后,Redis 做了改進(jìn),如果讀取的數(shù)據(jù)已經(jīng)過期了,從庫雖然不會(huì)刪除,但是會(huì)返回空值,這就避免了客戶端讀到過期數(shù)據(jù)。所以,在應(yīng)用主從集群時(shí),盡量使用 Redis 3.2 及以上版本。

使用了 Redis 3.2 后的版本,還是會(huì)讀到過期數(shù)據(jù),這跟 Redis 用于設(shè)置過期時(shí)間的命令有關(guān)系,有些命令給數(shù)據(jù)設(shè)置的過期時(shí)間在從庫上可能會(huì)被延后,導(dǎo)致應(yīng)該過期的數(shù)據(jù)又在從庫上被讀取到

4.1設(shè)置數(shù)據(jù)過期時(shí)間命令說明

  1. EXPIRE 和 PEXPIRE:它們給數(shù)據(jù)設(shè)置的是從命令執(zhí)行時(shí)開始計(jì)算的存活時(shí)間;
  2. EXPIREAT 和 PEXPIREAT:它們會(huì)直接把數(shù)據(jù)的過期時(shí)間設(shè)置為具體的一個(gè)時(shí)間點(diǎn)。

主從庫全量同步,收到EXPIRE命令,主庫直接執(zhí)行,全量同步完成發(fā)送給從庫,從庫執(zhí)行的時(shí)候會(huì)在當(dāng)前時(shí)間基礎(chǔ)上加上存活時(shí)間,過期時(shí)間明顯延后。

為了避免這種情況,在業(yè)務(wù)應(yīng)用中使用 EXPIREAT/PEXPIREAT 命令,把數(shù)據(jù)的過期時(shí)間設(shè)置為具體的時(shí)間點(diǎn),避免讀到過期數(shù)據(jù)

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Redis的BitMap使用操作命令

    Redis的BitMap使用操作命令

    Redis 為我們提供了位圖這一數(shù)據(jù)結(jié)構(gòu),每個(gè)用戶每天的登錄記錄只占據(jù)一位,365天就是365位,僅僅需要46字節(jié)就可存儲(chǔ),極大地節(jié)約了存儲(chǔ)空間,這篇文章主要介紹了Redis的BitMap使用操作命令,需要的朋友可以參考下
    2023-10-10
  • Redis如何實(shí)現(xiàn)分布式鎖

    Redis如何實(shí)現(xiàn)分布式鎖

    這篇文章主要介紹了Redis如何實(shí)現(xiàn)分布式鎖問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 利用Redis實(shí)現(xiàn)SQL伸縮的方法簡介

    利用Redis實(shí)現(xiàn)SQL伸縮的方法簡介

    這篇文章主要介紹了利用Redis實(shí)現(xiàn)SQL伸縮的方法,包括講到了鎖和時(shí)間序列等方面來提升傳統(tǒng)數(shù)據(jù)庫的性能,需要的朋友可以參考下
    2015-06-06
  • Redis中管道操作pipeline的實(shí)現(xiàn)

    Redis中管道操作pipeline的實(shí)現(xiàn)

    RedisPipeline是一種優(yōu)化客戶端與服務(wù)器通信的技術(shù),通過批量發(fā)送和接收命令減少網(wǎng)絡(luò)往返次數(shù),提高命令執(zhí)行效率,本文就來介紹一下Redis中管道操作pipeline的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-03-03
  • redis?protocol通信協(xié)議及使用詳解

    redis?protocol通信協(xié)議及使用詳解

    這篇文章主要為大家介紹了redis?protocol通信協(xié)議及使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Redis刪除緩存失敗的原因和解決方案

    Redis刪除緩存失敗的原因和解決方案

    本文討論了數(shù)據(jù)庫操作成功但緩存刪除失敗時(shí),線上環(huán)境下的應(yīng)對(duì)策略,提出了一種更穩(wěn)定的方法,包括主流程寫庫后再刪除緩存、刪除失敗進(jìn)入重試隊(duì)列、超過重試上限進(jìn)入死信隊(duì)列并觸發(fā)告警和補(bǔ)償?shù)却胧?需要的朋友可以參考下
    2026-04-04
  • Redis緩存常用4種策略原理詳解

    Redis緩存常用4種策略原理詳解

    這篇文章主要介紹了Redis緩存常用4種策略原理詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Redis的主從同步與對(duì)象模型詳解

    Redis的主從同步與對(duì)象模型詳解

    本文介紹了Redis的內(nèi)存管理機(jī)制、淘汰策略、以及持久化方法,包括RDB、AOF和混合持久化等,同時(shí),還討論了Redis的主從復(fù)制、集群配置以及高可用性方案,感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • 使用Spring?Boot實(shí)現(xiàn)Redis鍵過期回調(diào)功能示例詳解

    使用Spring?Boot實(shí)現(xiàn)Redis鍵過期回調(diào)功能示例詳解

    這篇文章主要介紹了使用Spring?Boot實(shí)現(xiàn)Redis鍵過期回調(diào)功能,就是一個(gè)實(shí)現(xiàn)Redis鍵過期回調(diào)功能的Spring?Boot應(yīng)用的示例,代碼簡單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • Redis預(yù)防緩存穿透的6種策略

    Redis預(yù)防緩存穿透的6種策略

    緩存穿透是指查詢一個(gè)根本不存在的數(shù)據(jù),由于緩存不命中,請(qǐng)求會(huì)穿透緩存層直接訪問數(shù)據(jù)庫,本文整理了6個(gè)Redis預(yù)防緩存穿透的方法,希望對(duì)大家有一定的幫助
    2025-04-04

最新評(píng)論

五指山市| 黄山市| 凭祥市| 句容市| 陆丰市| 新巴尔虎左旗| 雅安市| 道真| 建平县| 柳河县| 石河子市| 祁东县| 广元市| 应城市| 安溪县| 新巴尔虎左旗| 大邑县| 微山县| 襄樊市| 闵行区| 隆子县| 潢川县| 乌兰浩特市| 肇州县| 华容县| 闻喜县| 林州市| 漾濞| 松江区| 巨野县| 合阳县| 安新县| 灵璧县| 祁阳县| 盈江县| 长岭县| 宁德市| 乌什县| 敖汉旗| 历史| 丽江市|