亚洲乱色熟女一区二区三区丝袜,天堂√中文最新版在线,亚洲精品乱码久久久久久蜜桃图片,香蕉久久久久久av成人,欧美丰满熟妇bbb久久久

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

Redis數(shù)據(jù)庫——8種內(nèi)存淘汰機制

admin
2025年3月16日 21:11 本文熱度 1485

?

目錄

  • 過期鍵刪除策略
  • 內(nèi)存淘汰機制
    • Redis 3.0 的淘汰機制——近似 LRU 算法
    • Redis 4.0 的新增的淘汰機制——LFU 算法

過期鍵刪除策略

Redis 為管理內(nèi)存,對設(shè)置了過期時間的鍵采用了以下三種刪除策略:

  1. 定時過期

    • 描述:為每個設(shè)置了過期時間的鍵創(chuàng)建一個定時器,到達過期時間立即清除。
    • 優(yōu)點:對內(nèi)存很友好,過期數(shù)據(jù)能及時清除。
    • 缺點:需要消耗大量的 CPU 資源來處理定時器,影響緩存響應(yīng)時間和吞吐量。
  2. 惰性過期

    • 描述:只有在訪問某個鍵時才判斷其是否過期,過期則清除。
    • 優(yōu)點:最大化節(jié)省 CPU 資源。
    • 缺點:可能會有大量過期鍵未被訪問而占用內(nèi)存。
  3. 定期刪除

    • 描述:每隔一定時間掃描 expires 字典中的部分鍵,清除過期鍵。
    • 優(yōu)點:折中策略,通過調(diào)整掃描時間間隔和每次掃描數(shù)量,平衡 CPU 和內(nèi)存資源。

默認使用惰性過期 (Lazy Expiration)和定期刪除 (Periodic Deletion) 兩者結(jié)合的方式,能夠在性能和內(nèi)存使用之間找到一個良好的平衡。

內(nèi)存淘汰機制

內(nèi)存限制設(shè)置

  • Redis 可以通過參數(shù) maxmemory 設(shè)置內(nèi)存最大限制,從而避免 Redis 占滿機器的內(nèi)存,影響其他服務(wù)。
  • 默認值
    • maxmemory=0,表示沒有限制。
    •  32 位系統(tǒng) 上,Redis 最大支持內(nèi)存為 3GB(32 位系統(tǒng)最大內(nèi)存為 4GB)。
    •  64 位系統(tǒng) 上,Redis 的最大內(nèi)存限制為物理機的可用內(nèi)存。

Redis 的 maxmemory 參數(shù)和內(nèi)存淘汰機制,使其成為一種有效的緩存方案,是 Memcached 的有效替代方案。

常見策略

當(dāng)內(nèi)存達到 maxmemory 限制時,Redis 會按照 maxmemory-policy 啟動相應(yīng)的淘汰策略,Redis 默認的內(nèi)存淘汰策略是:noeviction。常見策略如下:

1. 針對設(shè)置了過期時間的鍵
  • volatile-lru:僅對設(shè)置了過期時間的鍵,淘汰最近最少使用的鍵。
  • volatile-ttl:僅對設(shè)置了過期時間的鍵,淘汰剩余時間最短的鍵。
  • volatile-random:僅對設(shè)置了過期時間的鍵,隨機淘汰。
  • volatile-lfu:僅對設(shè)置了過期時間的鍵,淘汰訪問頻率最低的鍵。
2. 針對所有鍵
  • allkeys-lru:對所有鍵,淘汰最近最少使用的鍵。
  • allkeys-random:對所有鍵,隨機淘汰。
  • allkeys-lfu:對所有鍵,淘汰訪問頻率最低的鍵。
3. 無淘汰策略
  • noeviction:不進行淘汰,當(dāng)內(nèi)存超限時直接返回錯誤。

Redis 3.0 的淘汰機制——近似 LRU 算法

策略含義特性
noeviction不淘汰
內(nèi)存超限后寫命令返回錯誤(如 OOM,del 命令除外)。
allkeys-lru
所有鍵的 LRU淘汰
在所有鍵中按照最近最少使用(LRU)原則剔除鍵,釋放空間。
volatile-lru
設(shè)置過期鍵的 LRU 淘汰
僅在設(shè)置了過期時間的鍵范圍內(nèi)按照 LRU 原則淘汰鍵(未設(shè)置過期時間則不淘汰)。
allkeys-random
所有鍵隨機淘汰
在所有鍵中隨機選擇淘汰。
volatile-random
設(shè)置過期鍵隨機淘汰
僅在設(shè)置了過期時間的鍵范圍內(nèi)隨機選擇淘汰。
volatile-ttl設(shè)置過期鍵按 TTL 淘汰
優(yōu)先刪除剩余時間(TTL)最短的鍵。

LRU(Least Recently Used)優(yōu)化設(shè)計

Redis 的 LRU 算法經(jīng)過優(yōu)化,保證內(nèi)存占用與淘汰效果之間的平衡,體現(xiàn)了工程實現(xiàn)中對 空間與時間的折中

注意:在主從復(fù)制模式(Replication)下,如果從節(jié)點達到 maxmemory 限制,不會記錄任何異常日志,但增量數(shù)據(jù)無法同步到從節(jié)點。


1. LRU 算法優(yōu)化
  • Redis 3.0 的 LRU 算法是近似實現(xiàn),并非精確 LRU。
  • 為了平衡內(nèi)存占用與性能,Redis 在實現(xiàn) LRU 時使用了 采樣方法
    • 默認從固定數(shù)量的鍵(由 maxmemory-samples 決定)中隨機挑選一定數(shù)量的鍵進行比較,淘汰其中最符合 LRU 策略的鍵。
    • 默認采樣值為 5,可以通過 maxmemory-samples 調(diào)整。
  • 參數(shù)設(shè)置
    • 使用 CONFIG SET maxmemory-samples <count> 動態(tài)調(diào)整采樣數(shù)量,采樣越多越接近理論 LRU,但會增加性能開銷。
2. 近似 LRU 的特點
  • 優(yōu)點:節(jié)省內(nèi)存,只需記錄部分鍵的訪問信息。
  • 缺點:可能導(dǎo)致部分鍵未能準(zhǔn)確淘汰,尤其在訪問模式復(fù)雜時。
  • 適用場景
    • 訪問模式接近冪次分布時,近似 LRU 效果與理論 LRU 非常接近,幾乎無差別。
3. 近似 LRU 與理論 LRU 效果對比

  • 當(dāng)數(shù)據(jù)訪問模式接近冪次分布(大部分訪問集中于少數(shù)鍵)時,近似 LRU 表現(xiàn)與理論 LRU 幾乎無差別。

Redis 4.0 的新增的淘汰機制——LFU 算法

1. LFU 算法

  • Redis 4.0 引入了 LFU(Least Frequently Used) 算法,專注于鍵的訪問頻率,而非最近訪問時間。
  • LFU 的實現(xiàn)機制
    • 使用 Morris counters(一種稀疏計數(shù)器算法)記錄訪問頻率,占用內(nèi)存極小。
    • 計數(shù)器會隨著時間衰減,以降低舊訪問對頻率統(tǒng)計的影響。
    • 提供參數(shù)配置計數(shù)更新頻率和衰減速度,靈活控制緩存命中率。

2. LFU 的特點

  • 與 LRU 的對比
    • LRU:基于最近使用時間,適合短期緩存需求。
    • LFU:基于訪問頻率,適合長期緩存需求。
  • 優(yōu)點:更適合評估鍵的整體重要性,避免 LRU 中因短期高頻訪問造成的緩存污染。
  • 應(yīng)用場景
    • 適用于需要長期保留高頻訪問鍵的場景,如熱點數(shù)據(jù)。

3. 相關(guān)策略

  • allkeys-lfu:對所有鍵按 LFU 策略淘汰。
  • volatile-lfu:僅對設(shè)置了過期時間的鍵按 LFU 策略淘汰。


閱讀原文:原文鏈接


該文章在 2025/3/17 10:30:15 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調(diào)度、堆場、車隊、財務(wù)費用、相關(guān)報表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點,圍繞調(diào)度、堆場作業(yè)而開發(fā)的。集技術(shù)的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務(wù)都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved