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

Redis緩存使用的BigKey問(wèn)題解決

 更新時(shí)間:2025年05月26日 10:01:49   作者:王軍新  
BigKey在Redis中存儲(chǔ)的單個(gè)Key對(duì)應(yīng)的Value過(guò)大,本文主要介紹了Redis緩存使用的BigKey問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下

一、什么是 BigKey?

BigKey 指在 Redis 中存儲(chǔ)的 單個(gè) Key 對(duì)應(yīng)的 Value 過(guò)大,通常表現(xiàn)為:

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

二、BigKey 的危害

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

三、如何發(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

缺點(diǎn):只能返回每種類型的最大 Key,無(wú)法全面掃描。

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

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

缺點(diǎn):只能返回指定Key的信息。

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

# 查看指定 Key 信息
DEBUG OBJECT user

缺點(diǎn):只能返回指定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 的成員和分?jǐn)?shù)

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

5. 使用第三方工具

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

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

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

四、BigKey 的解決方案

1. 拆分大 Key

String 類型:拆分為多個(gè)子 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 "手機(jī)" price 5000 ... (5000個(gè)字段)
# 拆分為
HSET product:999:details:1 name "手機(jī)" price 5000
HSET product:999:details:2 field1001 "value1001" ...

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

替代方案:

場(chǎng)景錯(cuò)誤用法優(yōu)化方案
存儲(chǔ)用戶標(biāo)簽SET 存儲(chǔ) JSON 列表改用 SET 或 ZSET
頻繁更新的計(jì)數(shù)器String + INCR改用 HASH 分片存儲(chǔ)

3. 客戶端緩存

  • 對(duì)熱點(diǎn) BigKey 使用本地緩存(如 Caffeine),減少 Redis 訪問(wèn)。

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

相關(guān)文章

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

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

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

    Redis的鍵String全面詳解

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

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

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

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

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

    Redis入門教程詳解

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

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

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

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

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

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

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

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

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

    redis-cli -p 6379 info命令詳解

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

最新評(píng)論