Redis 熱 key 和大 key 問題小結(jié)
一、什么是 Redis 熱 key?
熱 key(Hot Key)定義:
在單位時間內(nèi)被**頻繁訪問(讀/寫)**的 key,導(dǎo)致其訪問集中、壓力過大。
熱 key 常見表現(xiàn):
- QPS 極高(某 key 每秒被訪問幾萬次)
- 某業(yè)務(wù)高頻讀寫一個 key(如秒殺庫存、排行榜 top1)
- Redis 實例 CPU 異常,卻只服務(wù)一個 key
熱 key 的風(fēng)險:
問題 | 說明 |
---|---|
單點壓力過大 | 所有請求打到同一個 key 上 |
緩存擊穿 | 熱 key 過期瞬間,大量請求落到 DB |
主從復(fù)制延遲 | 熱 key 改變頻繁 → 主從同步數(shù)據(jù)猛增 |
節(jié)點不均衡(集群) | Redis Cluster 中 key 分布不均勻 |
熱 key 解決方案:
問題 | 說明 |
---|---|
單點壓力過大 | 所有請求打到同一個 key 上 |
緩存擊穿 | 熱 key 過期瞬間,大量請求落到 DB |
主從復(fù)制延遲 | 熱 key 改變頻繁 → 主從同步數(shù)據(jù)猛增 |
節(jié)點不均衡(集群) | Redis Cluster 中 key 分布不均勻 |
二、什么是 Redis 大 key?
大 key(Big Key)定義:
指的是 value 太大(例如一個 Hash 內(nèi)含幾百萬個 field,或一個 List 有 10 萬項以上)或**字符串體積超大(如幾 MB 圖片)**的 key。
大 key 的風(fēng)險:
問題 | 說明 |
---|---|
? 刪除阻塞 | DEL 大 key 時會阻塞 Redis 單線程 |
? 主從復(fù)制變慢 / 丟失 | 主節(jié)點傳送一個大 key → 復(fù)制延遲 |
? 造成 RDB / AOF 暴漲 | Dump 一次會卡死 |
? 影響單條命令性能 | 操作大 key 會變慢,例如 HGETALL |
大 key 識別方法:
使用
redis-cli --bigkeys
命令掃描實例使用
redis-rdb-tools
分析 RDB 文件通過慢查詢?nèi)罩?+ 監(jiān)控查看
HGETALL
、LRANGE
、SMEMBERS
的大 key
大 key 解決方案:
方案 | 說明 |
---|---|
? 拆分?jǐn)?shù)據(jù)結(jié)構(gòu) | 如一個大 Hash 拆成多個小 Hash(按 ID) |
? 控制最大 field 數(shù)/元素數(shù) | 控制單個結(jié)構(gòu)體內(nèi)成員 ≤ 10K |
? 禁用危險命令 | 比如關(guān)閉 KEYS , FLUSHALL , HGETALL |
? 延遲刪除 / 慢刪策略 | 例如將大 key 分批 UNLINK 刪除 |
? 限制最大 value 大小 | 字符串不要超過幾 KB,避免超過 MTU |
UNLINK vs DEL 的區(qū)別:
命令 | 說明 |
---|---|
DEL | 立即刪除(阻塞線程) |
UNLINK | 異步刪除,非阻塞 ? |
? Redis 4.0+ 建議用 UNLINK 刪除大 key!
總結(jié)對比表
類型 | 觸發(fā)方式 | 風(fēng)險 | 解決方案核心 |
---|---|---|---|
熱 key | 高頻訪問同一個 key | CPU 飆升、擊穿、熱點 | 本地緩存、分片、限流、預(yù)熱 |
大 key | value 結(jié)構(gòu)太大 | 慢查詢、阻塞、同步問題 | 拆分結(jié)構(gòu)、異步刪除、結(jié)構(gòu)約束、UNLINK |
到此這篇關(guān)于Redis 熱 key 和大 key 問題的文章就介紹到這了,更多相關(guān)Redis 熱 key 和大 key內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
redis持久化AOF和RDB的區(qū)別及解決各個場景問題示例
這篇文章主要為大家介紹了redis持久化AOF和RDB的區(qū)別及解決各個場景問題示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Redis 實現(xiàn)好友關(guān)注和關(guān)注推送的示例代碼
本文介紹了使用Redis實現(xiàn)好友關(guān)注和關(guān)注推送功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-03-03redis分布式Jedis類型轉(zhuǎn)換的異常深入研究
這篇文章主要介紹了redis分布式Jedis類型轉(zhuǎn)換的異常深入研究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03redis哈希類型_動力節(jié)點Java學(xué)院整理
這篇文章主要介紹了redis哈希類型的常用方法及原理淺析,感興趣的朋友一起看看吧2017-08-08