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

Redis Key過(guò)期刪除策略使用小結(jié)

 更新時(shí)間:2026年02月28日 09:35:40   作者:rchmin  
Redis通過(guò)惰性刪除和定期刪除策略管理過(guò)期數(shù)據(jù),結(jié)合內(nèi)存淘汰策略有效處理大量帶有過(guò)期時(shí)間的Key,確保高效性和穩(wěn)定性,下面就來(lái)介紹一下如何使用,感興趣的可以了解一下

Redis 的 Key 過(guò)期數(shù)據(jù)刪除策略是 Redis 內(nèi)存管理的關(guān)鍵部分,它通過(guò) 兩種主要策略 相結(jié)合的方式清理過(guò)期數(shù)據(jù):

1.被動(dòng)刪除(惰性刪除 - Lazy Expiration)

工作原理

  • 當(dāng)客戶(hù)端嘗試訪(fǎng)問(wèn)某個(gè) Key 時(shí),Redis 會(huì)先檢查該 Key 是否已過(guò)期
  • 如果過(guò)期,則立即刪除并返回 nil(就像 Key 不存在一樣)
  • 如果未過(guò)期,則正常返回?cái)?shù)據(jù)

優(yōu)點(diǎn)

  • CPU 友好,只在訪(fǎng)問(wèn)時(shí)消耗資源
  • 簡(jiǎn)單直接,不影響未訪(fǎng)問(wèn)的 Key

缺點(diǎn)

  • 內(nèi)存不友好,不訪(fǎng)問(wèn)的過(guò)期 Key 會(huì)一直占用內(nèi)存
  • 可能導(dǎo)致內(nèi)存泄露(如果某些過(guò)期 Key 永不被訪(fǎng)問(wèn))

2.主動(dòng)刪除(定期刪除 - Periodic Expiration)

工作原理
Redis 會(huì)周期性地(默認(rèn)每秒 10 次)執(zhí)行以下操作:

  1. 隨機(jī)測(cè)試:從設(shè)置了過(guò)期時(shí)間的 Key 集合中隨機(jī)選擇 20 個(gè) Key
  2. 檢查過(guò)期:刪除其中所有已過(guò)期的 Key
  3. 調(diào)整頻率:如果超過(guò) 25% 的 Key 已過(guò)期,則重復(fù)步驟 1-2
  4. 限制時(shí)間:每次掃描最多持續(xù) 25ms,避免阻塞主線(xiàn)程

配置參數(shù)(redis.conf):

# 每秒執(zhí)行過(guò)期掃描的次數(shù)(默認(rèn) 10)
hz 10
 
# 每次掃描的 CPU 時(shí)間百分比上限(默認(rèn) 25%)
# 實(shí)際上每次掃描最多 25ms(1000ms/hz * 25%)

優(yōu)點(diǎn)

  • 減少內(nèi)存中過(guò)期 Key 的堆積
  • 在 CPU 和內(nèi)存之間取得平衡

缺點(diǎn)

  • 不是實(shí)時(shí)的,可能存在過(guò)期 Key 未被及時(shí)清理
  • 增加了一定的 CPU 開(kāi)銷(xiāo)

3.內(nèi)存淘汰策略(Eviction Policies)

當(dāng)內(nèi)存達(dá)到 maxmemory 限制時(shí),Redis 會(huì)根據(jù)配置的策略刪除數(shù)據(jù):

# 內(nèi)存限制(默認(rèn)不限制)
maxmemory <bytes>
 
# 淘汰策略
maxmemory-policy <policy>

淘汰策略選項(xiàng)

策略<policy>描述適用場(chǎng)景
noeviction不淘汰,返回錯(cuò)誤數(shù)據(jù)絕對(duì)不能丟失
allkeys-lru從所有 Key 中使用 LRU需要緩存效果
volatile-lru從帶過(guò)期時(shí)間的 Key 中使用 LRU混合使用
allkeys-random隨機(jī)刪除所有 Key所有 Key 同等重要
volatile-random隨機(jī)刪除帶過(guò)期時(shí)間的 Key混合使用
volatile-ttl刪除即將過(guò)期的 Key(TTL最?。?/td>優(yōu)先保留新數(shù)據(jù)
allkeys-lfu從所有 Key 中使用 LFU(4.0+)訪(fǎng)問(wèn)頻率重要
volatile-lfu從帶過(guò)期時(shí)間的 Key 中使用 LFU(4.0+)混合使用

4.實(shí)際工作流程示例

5.性能優(yōu)化建議

監(jiān)控過(guò)期 Key 數(shù)量

# 查看過(guò)期 Key 相關(guān)信息
redis-cli info stats | grep expired_keys

合理配置

# 根據(jù)負(fù)載調(diào)整 hz 值
hz 100  # 更高頻率(更及時(shí)清理,更高CPU)
hz 1    # 更低頻率(更少CPU,可能堆積)

避免大量 Key 同時(shí)過(guò)期

# 不好的做法:同時(shí)設(shè)置相同過(guò)期時(shí)間
for i in range(100000):
    redis.set(f"key:{i}", "data", ex=3600)

# 好的做法:添加隨機(jī)偏移
for i in range(100000):
    redis.set(f"key:{i}", "data", ex=3600 + random.randint(0, 300))

6.特殊情況處理

AOF/RDB 持久化

  • RDB:生成快照時(shí),過(guò)期 Key 不會(huì)被保存
  • AOF:Key 過(guò)期時(shí),會(huì)追加一條 DEL 命令

主從復(fù)制

  • 主節(jié)點(diǎn)刪除過(guò)期 Key 后,會(huì)向從節(jié)點(diǎn)發(fā)送 DEL 命令
  • 從節(jié)點(diǎn)不會(huì)主動(dòng)刪除過(guò)期 Key,只接受主節(jié)點(diǎn)指令

集群模式

  • 每個(gè)節(jié)點(diǎn)獨(dú)立管理自己的過(guò)期 Key
  • 遷移槽位時(shí),過(guò)期信息一并遷移

總結(jié)

Redis 的過(guò)期刪除策略是 惰性刪除 + 定期刪除 的組合拳:

  • 惰性刪除:保證訪(fǎng)問(wèn)的正確性
  • 定期刪除:減少內(nèi)存浪費(fèi)
  • 內(nèi)存淘汰:防止內(nèi)存耗盡的最后防線(xiàn)

這種設(shè)計(jì)在 CPU 使用率、內(nèi)存效率和實(shí)現(xiàn)復(fù)雜性之間取得了良好的平衡,使得 Redis 能夠高效處理大量帶有過(guò)期時(shí)間的 Key。

到此這篇關(guān)于Redis Key過(guò)期刪除策略使用小結(jié)的文章就介紹到這了,更多相關(guān)Redis Key過(guò)期刪除內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redis分布式鎖使用及說(shuō)明

    Redis分布式鎖使用及說(shuō)明

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

    redis事務(wù)如何解決超賣(mài)問(wèn)題

    使用Redis事務(wù)可以有效避免超賣(mài)問(wèn)題,首先,通過(guò)MULTI命令開(kāi)啟事務(wù),將需要執(zhí)行的多個(gè)命令加入到事務(wù)中,然后通過(guò)EXEC命令提交事務(wù),確保這些命令可以一次性、順序地執(zhí)行,在事務(wù)執(zhí)行期間,Redis服務(wù)器不會(huì)執(zhí)行其他客戶(hù)端的命令
    2024-11-11
  • 淺談redis緩存在項(xiàng)目中的使用

    淺談redis緩存在項(xiàng)目中的使用

    最近由于項(xiàng)目需要,在系統(tǒng)緩存服務(wù)部分上用到了redis,本文就淺談下在redis緩存在項(xiàng)目中的使用,感興趣的小伙伴們可以參考一下
    2021-05-05
  • Redis源碼閱讀:Redis字符串SDS詳解

    Redis源碼閱讀:Redis字符串SDS詳解

    這篇文章主要介紹了Redis源碼閱讀:Redis字符串SDS,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Redis設(shè)置過(guò)期時(shí)間的實(shí)現(xiàn)示例

    Redis設(shè)置過(guò)期時(shí)間的實(shí)現(xiàn)示例

    在使用redis作為緩存存儲(chǔ)值的時(shí)候,一般都是需要設(shè)置值的過(guò)期時(shí)間,本文主要介紹了Redis設(shè)置過(guò)期時(shí)間的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-06-06
  • redis list類(lèi)型命令的實(shí)現(xiàn)

    redis list類(lèi)型命令的實(shí)現(xiàn)

    本文主要介紹了redis list類(lèi)型命令的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • mac安裝redis全過(guò)程

    mac安裝redis全過(guò)程

    文章內(nèi)容主要介紹了如何從官網(wǎng)下載指定版本的Redis,以及如何在自定義目錄下安裝和啟動(dòng)Redis,還提到了如何修改Redis的密碼和配置文件,以及使用RedisInsight進(jìn)行可視化管理,最后,總結(jié)了一些常用的Redis命令
    2025-01-01
  • Redis 的過(guò)期策略與鍵的過(guò)期時(shí)間設(shè)置方法

    Redis 的過(guò)期策略與鍵的過(guò)期時(shí)間設(shè)置方法

    Redis通過(guò)惰性刪除和定期刪除策略管理內(nèi)存,提供多種命令設(shè)置鍵的過(guò)期時(shí)間,并通過(guò)過(guò)期字典高效處理過(guò)期鍵,合理設(shè)置過(guò)期時(shí)間、監(jiān)控過(guò)期鍵數(shù)量和避免大量鍵同時(shí)過(guò)期是最佳實(shí)踐,本文介紹Redis 的過(guò)期策略與鍵的過(guò)期時(shí)間設(shè)置,感興趣的朋友一起看看吧
    2025-03-03
  • redis底層數(shù)據(jù)結(jié)構(gòu)之ziplist實(shí)現(xiàn)詳解

    redis底層數(shù)據(jù)結(jié)構(gòu)之ziplist實(shí)現(xiàn)詳解

    這篇文章主要為大家介紹了redis底層數(shù)據(jù)結(jié)構(gòu)之ziplist實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Redis?腳本和連接命令示例詳解

    Redis?腳本和連接命令示例詳解

    Redis腳本是一種可以實(shí)現(xiàn)復(fù)雜任務(wù)的腳本語(yǔ)言,可以用來(lái)快速履行復(fù)雜任務(wù),靈活處理數(shù)據(jù)管理和管理復(fù)雜的利用場(chǎng)景,這篇文章主要介紹了Redis?腳本和連接命令,需要的朋友可以參考下
    2023-09-09

最新評(píng)論

巫溪县| 化州市| 东阿县| 宜兰县| 白朗县| 扶风县| 康保县| 古丈县| 桓台县| 德阳市| 府谷县| 南陵县| 手游| 大邑县| 英吉沙县| 外汇| 定安县| 河西区| 兖州市| 泾源县| 池州市| 奉化市| 明水县| 油尖旺区| 临泽县| 清水县| 抚宁县| 桓台县| 木里| 洪泽县| 辽源市| 临安市| 女性| 长海县| 浮山县| 崇义县| 赤壁市| 江安县| 前郭尔| 屏东县| 巴彦县|