欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Redis過期刪除機制與內(nèi)存淘汰策略的解析指南

 更新時間:2025年06月10日 15:30:12   作者:拾荒的小海螺  
在使用 Redis 構(gòu)建緩存系統(tǒng)時,很多開發(fā)者只設置了 EXPIRE 但卻忽略了背后 Redis 的過期刪除機制與內(nèi)存淘汰策略,下面小編就來和大家詳細介紹一下

1、簡述

在使用 Redis 構(gòu)建緩存系統(tǒng)時,很多開發(fā)者只設置了 EXPIRE 但卻忽略了背后 Redis 的過期刪除機制與內(nèi)存淘汰策略。理解這兩者非常關鍵,直接關系到你的緩存系統(tǒng)是否高效、穩(wěn)定、可控。

本文將深入剖析 Redis 中的兩類機制:

  • 過期刪除策略:key 如何在過期后被清除?
  • 內(nèi)存淘汰策略:內(nèi)存滿了之后,哪些 key 會被刪除?

2、Redis 的過期刪除策略(Key Expiration)

Redis 支持給 key 設置 TTL(Time To Live),例如:

SET user:1:name "Tom" EX 60  # 設置60秒后過期

Redis 有三種過期刪除策略:

策略名稱觸發(fā)方式特點與代價
惰性刪除訪問 key 時觸發(fā)延遲釋放內(nèi)存,資源占用低,但可能滯留
定期刪除每秒掃描過期 key有概率清理過期 key,減緩內(nèi)存膨脹
主動刪除內(nèi)存不足時觸發(fā)與內(nèi)存淘汰策略結(jié)合,主動回收

Redis 實際如何執(zhí)行過期?

Redis 并不會在 key 到期的一刻立刻刪除它,而是:

  • 每秒隨機抽取一批 key 檢查過期(默認每次檢查 20 個)
  • 被訪問的 key 會“惰性檢查”,若過期就順便刪掉
  • 在內(nèi)存壓力大時,會加速觸發(fā)清理

3、Redis 內(nèi)存淘汰策略(Eviction Policy)

當 Redis 達到最大內(nèi)存上限(由 maxmemory 指定)時,就必須開始淘汰舊數(shù)據(jù)。此時就輪到 內(nèi)存淘汰策略 發(fā)揮作用。

Redis 提供的 8 種淘汰策略:

策略描述
noeviction默認策略,拒絕寫入新數(shù)據(jù),直接報錯
allkeys-lru所有 key 中,淘汰最近最少使用的
volatile-lru只在設置了 TTL 的 key 中,淘汰最少使用的
allkeys-random所有 key 中,隨機淘汰
volatile-random只在設置了 TTL 的 key 中,隨機淘汰
volatile-ttl只淘汰 TTL 最短的 key(最早過期)
volatile-lfu只在設置了 TTL 的 key 中,淘汰最少頻率使用
allkeys-lfu所有 key 中,淘汰最少頻率使用

配置示例:

maxmemory 512mb
maxmemory-policy allkeys-lru

4、實踐場景與建議

場景 1:普通緩存場景(推薦)

maxmemory 1gb
maxmemory-policy allkeys-lru

優(yōu)點:自動替換最不常訪問的 key,效果最貼近緩存的預期行為

使用方式:

SET user:123 "json-data" EX 300

場景 2:數(shù)據(jù)較重要,只刪除過期 key

maxmemory 1gb
maxmemory-policy volatile-lru

僅淘汰設置了過期時間的 key,持久 key 不被動清除

適合混合數(shù)據(jù)結(jié)構(gòu):部分緩存 + 部分持久值

場景 3:用戶限流或驗證碼存儲

SET captcha:uid123 "XYZ" EX 60

結(jié)合 volatile-ttl 策略,可以優(yōu)先清理即將過期的驗證碼等

5、示例:模擬淘汰行為

# 配置
CONFIG SET maxmemory 100kb
CONFIG SET maxmemory-policy allkeys-lru

# 插入多個 key
for i in {1..100}; do
  SET "key$i" "$(openssl rand -hex 20)"
done

# 查看哪些 key 被淘汰了
INFO stats | grep evicted

輸出示例:

evicted_keys:57

說明有 57 個 key 被自動淘汰,Redis 按 LRU 策略生效。

  • 附加建議
  • Redis 淘汰的是“key”,不是“內(nèi)存最占用的值”
  • Redis 7.0+ 中 LFU 策略適合熱點數(shù)據(jù),尤其在流量分布極不均衡時更精準
  • 若你使用 Redis 作為數(shù)據(jù)庫(而非緩存),應避免使用淘汰策略,并開啟持久化

6、總結(jié)

分類策略類型控制方式推薦場景
過期刪除策略惰性/定期自動所有 Redis 使用
內(nèi)存淘汰策略8 種策略配置項控制緩存系統(tǒng)、高頻數(shù)據(jù)

推薦配置模板

# 設置最大內(nèi)存限制
maxmemory 512mb

# 設置淘汰策略
maxmemory-policy allkeys-lru

到此這篇關于Redis過期刪除機制與內(nèi)存淘汰策略的解析指南的文章就介紹到這了,更多相關Redis過期刪除與內(nèi)存淘汰內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Redis實現(xiàn)全局唯一Id的使用示例

    Redis實現(xiàn)全局唯一Id的使用示例

    全局唯一ID有多個方法可供選擇,其中一種是使用Redis,本文就來介紹一下Redis實現(xiàn)全局唯一Id的使用示例,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • Linux上安裝Redis詳細教程

    Linux上安裝Redis詳細教程

    這篇文章主要給大家詳細介紹了在Linux上安裝Redis詳細教程,文中有詳細的代碼示例和安裝步驟,對我們學習安裝redis有一定的幫助,需要的朋友可以參考下
    2023-07-07
  • 關于在Redis中使用Pipelining加速查詢的問題

    關于在Redis中使用Pipelining加速查詢的問題

    這篇文章主要介紹了在Redis中使用Pipelining加速查詢,Redis是一個client-server模式的TCP服務,也被稱為Request/Response協(xié)議的實現(xiàn),本文通過一個例子給大家詳細介紹,感興趣的朋友一起看看吧
    2022-05-05
  • Redis實現(xiàn)UV統(tǒng)計的示例代碼

    Redis實現(xiàn)UV統(tǒng)計的示例代碼

    本文主要介紹了Redis實現(xiàn)UV統(tǒng)計的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • redis-cli -p 6379 info命令詳解

    redis-cli -p 6379 info命令詳解

    這篇文章主要介紹了redis-cli -p 6379 info命令詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Redis基本數(shù)據(jù)類型Set常用操作命令

    Redis基本數(shù)據(jù)類型Set常用操作命令

    這篇文章主要為大家介紹了Redis基本數(shù)據(jù)類型Set常用操作命令,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • Redis數(shù)據(jù)庫的安裝和配置教程詳解

    Redis數(shù)據(jù)庫的安裝和配置教程詳解

    這篇文章主要介紹了Redis數(shù)據(jù)庫的安裝和配置?,主要包括Linux環(huán)境安裝Redis和windows環(huán)境安裝Redis,redis客戶端安裝方法,本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • Redis和Lua使用過程中遇到的小問題

    Redis和Lua使用過程中遇到的小問題

    這篇文章主要給大家介紹了關于Redis和Lua使用過程中遇到的小問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-11-11
  • redis延時隊列zset實現(xiàn)的示例

    redis延時隊列zset實現(xiàn)的示例

    延時隊列是一種常用的設計模式,用于處理那些需要在未來某個時間點執(zhí)行的任務,本文主要介紹了redis延時隊列zset實現(xiàn)的示例,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • Redis優(yōu)化token校驗主動失效的實現(xiàn)方案

    Redis優(yōu)化token校驗主動失效的實現(xiàn)方案

    在普通的token頒發(fā)和校驗中 當用戶發(fā)現(xiàn)自己賬號和密碼被暴露了時修改了登錄密碼后舊的token仍然可以通過系統(tǒng)校驗直至token到達失效時間,所以系統(tǒng)需要token主動失效的一種能力,所以本文給大家介紹了Redis優(yōu)化token校驗主動失效的實現(xiàn)方案,需要的朋友可以參考下
    2024-03-03

最新評論