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

Redis緩存使用的BigKey問題解決

 更新時間:2025年05月26日 10:01:49   作者:王軍新  
BigKey在Redis中存儲的單個Key對應的Value過大,本文主要介紹了Redis緩存使用的BigKey問題解決,具有一定的參考價值,感興趣的可以了解一下

一、什么是 BigKey?

BigKey 指在 Redis 中存儲的 單個 Key 對應的 Value 過大,通常表現(xiàn)為:

  • String 類型:Value 長度 > 10KB。
  • Hash/List/Set/ZSet:元素數(shù)量 > 5,000 或總大小 > 10MB。

二、BigKey 的危害

問題影響
內(nèi)存不均導致集群節(jié)點內(nèi)存傾斜,可能觸發(fā) OOM。
阻塞請求單線程模型下,操作 BigKey 耗時高,阻塞其他命令(如 DEL 大 Key 卡頓)。
網(wǎng)絡擁塞大 Value 傳輸占用帶寬,影響其他請求延遲。
持久化故障AOF/RDB 保存大 Key 時耗時劇增,甚至失敗。

三、如何發(fā)現(xiàn) BigKey?

1. 使用 Redis 內(nèi)置命令 redis-cli --bigkeys

# 掃描 BigKey(Redis 4.0+)
redis-cli --bigkeys

# 輸出示例(匯總每種數(shù)據(jù)類型的最大 Key)
[00.00%] Biggest string found so far 'user' with 10240 bytes
[00.00%] Biggest hash   found so far 'product' with 5000 fields

缺點:只能返回每種類型的最大 Key,無法全面掃描。

2. 使用 Redis 內(nèi)置命令 MEMORY USAGE

# 查看指定 Key 的內(nèi)存占用(Redis 4.0+)
MEMORY USAGE user

缺點:只能返回指定Key的信息。

3. 使用 Redis 內(nèi)置命令 DEBUG OBJECT

# 查看指定 Key 信息
DEBUG OBJECT user

缺點:只能返回指定Key的信息。

4. 使用 Redis 內(nèi)置命令 SCAN + MEMORY USAGE 或 DEBUG OBJECT

使用sacn 命令掃描redis 中的key,結(jié)合 memory usage 或 debug object 判斷key 值大小

SCAN 0 MATCH order:* COUNT 100 
HSCAN user:1000 0  # 遍歷 Hash 的字段
SSCAN followers 0  # 遍歷 Set 的成員
ZSCAN rankings 0   # 遍歷 ZSet 的成員和分數(shù)

可循環(huán)定時執(zhí)行scan命令遍歷出bigKey

5. 使用第三方工具

rdb-tools:分析 RDB 文件,統(tǒng)計大 Key。

pip install rdbtools
rdb --command memory dump.rdb --bytes 10240 --type string

RedisInsight:圖形化工具直觀查看內(nèi)存分布。

四、BigKey 的解決方案

1. 拆分大 Key

String 類型:拆分為多個子 Key。

# 原始 Key
SET user:1000:profile "超大JSON數(shù)據(jù)..."
# 拆分為
SET user:1000:profile:part1 "JSON片段1"
SET user:1000:profile:part2 "JSON片段2"

Hash/List/Set/ZSet:按字段或范圍分片。

# 原始 Hash
HSET product:999:details name "手機" price 5000 ... (5000個字段)
# 拆分為
HSET product:999:details:1 name "手機" price 5000
HSET product:999:details:2 field1001 "value1001" ...

2. 使用合適的數(shù)據(jù)結(jié)構(gòu)

替代方案:

場景錯誤用法優(yōu)化方案
存儲用戶標簽SET 存儲 JSON 列表改用 SET 或 ZSET
頻繁更新的計數(shù)器String + INCR改用 HASH 分片存儲

3. 客戶端緩存

  • 對熱點 BigKey 使用本地緩存(如 Caffeine),減少 Redis 訪問。

到此這篇關于Redis緩存使用的BigKey問題解決的文章就介紹到這了,更多相關Redis BigKey問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • Redis?中ZSET數(shù)據(jù)類型命令使用及對應場景總結(jié)(案例詳解)

    Redis?中ZSET數(shù)據(jù)類型命令使用及對應場景總結(jié)(案例詳解)

    這篇文章主要介紹了Redis?中ZSET數(shù)據(jù)類型命令使用及對應場景總結(jié),本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-01-01
  • Redis的鍵String全面詳解

    Redis的鍵String全面詳解

    這篇文章主要為大家介紹了Redis的鍵String全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06
  • Redis 的查詢很快的原因解析及Redis 如何保證查詢的高效

    Redis 的查詢很快的原因解析及Redis 如何保證查詢的高效

    由于redis是內(nèi)存數(shù)據(jù)庫,歸功于它的數(shù)據(jù)結(jié)構(gòu)所以查詢效率非常高,今天通過本文給大家介紹下Redis 的查詢很快的原因解析及Redis 如何保證查詢的高效,感興趣的朋友一起看看吧
    2022-03-03
  • k8s部署redis哨兵的實現(xiàn)

    k8s部署redis哨兵的實現(xiàn)

    本文主要介紹了k8s部署redis哨兵的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • Redis入門教程詳解

    Redis入門教程詳解

    本文詳細介紹了Redis,文中主要講解了其基本數(shù)據(jù)結(jié)構(gòu)、高級數(shù)據(jù)結(jié)構(gòu)、高級特性、使用場景等,需要了解的朋友可以參考一下
    2021-08-08
  • SpringSession通過Redis統(tǒng)計在線用戶數(shù)量的實現(xiàn)代碼

    SpringSession通過Redis統(tǒng)計在線用戶數(shù)量的實現(xiàn)代碼

    這篇文章主要介紹了SpringSession通過Redis統(tǒng)計在線用戶數(shù)量,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • 如何操作Redis和zookeeper實現(xiàn)分布式鎖

    如何操作Redis和zookeeper實現(xiàn)分布式鎖

    這篇文章主要介紹了如何操作Redis和zookeeper實現(xiàn)分布式鎖的相關資料,需要的朋友可以參考下
    2017-07-07
  • Redis主從集群切換數(shù)據(jù)丟失的解決方案

    Redis主從集群切換數(shù)據(jù)丟失的解決方案

    這篇文章主要介紹了Redis主從集群切換數(shù)據(jù)丟失的解決方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • Redis與本地緩存的結(jié)合實現(xiàn)

    Redis與本地緩存的結(jié)合實現(xiàn)

    我們開發(fā)中經(jīng)常用到Redis作為緩存,本文主要介紹了Redis與本地緩存的結(jié)合實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • redis-cli -p 6379 info命令詳解

    redis-cli -p 6379 info命令詳解

    這篇文章主要介紹了redis-cli -p 6379 info命令詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12

最新評論