Redis排查大key的3種方法小結(jié)
在日常Redis的使用中,難免遇到因?yàn)?key 存儲了過大的數(shù)據(jù)而造成請求緩慢甚至阻塞的情況,這個(gè)時(shí)候就需要排查 Redis 的大key去優(yōu)化業(yè)務(wù)了,下面提供一些排查方案總結(jié),僅供參考。
一、多大的 key 算大呢?
Redis 實(shí)踐總結(jié)(僅供參考):
合理的 Key 中 Value 的字節(jié)大小,推薦小于 10 KB。
過大的 Value 會(huì)引發(fā)數(shù)據(jù)傾斜、熱點(diǎn)Key、實(shí)例流量或 CPU 性能被占滿等問題,應(yīng)從設(shè)計(jì)源頭上避免此類問題帶來的性能影響。
那么 value Bytes > 10 kb 可以作為判斷 大 key 的一個(gè)參考值。
二、排查大 key 的方法
1、使用命令 --bigkeys
--bigkeys 是 redis 自帶的命令,對整個(gè) Key 進(jìn)行掃描,統(tǒng)計(jì) string,list,set,zset,hash 這幾個(gè)常見數(shù)據(jù)類型中每種類型里的最大的 key。
string 類型統(tǒng)計(jì)的是 value 的字節(jié)數(shù);另外 4 種復(fù)雜結(jié)構(gòu)的類型統(tǒng)計(jì)的是元素個(gè)數(shù),不能直觀的看出 value 占用字節(jié)數(shù),所以 --bigkeys 對分析 string 類型的大 key 是有用的,而復(fù)雜結(jié)構(gòu)的類型還需要一些第三方工具。
注:元素個(gè)數(shù)少,不一定 value 不大;元素個(gè)數(shù)多,也不一定 value 就大
redis-cli -h 127.0.0.1 -p 6379 -a "password" --bigkeys
--bigkeys 是以 scan 延遲計(jì)算的方式掃描所有 key,因此執(zhí)行過程中不會(huì)阻塞 redis,但實(shí)例存在大量的 keys 時(shí),命令執(zhí)行的時(shí)間會(huì)很長,這種情況建議在 slave 上掃描。
–-bigkeys 其實(shí)就是找出類型中最大的 key,最大的 key 不一定是大 key,最大的 key 都不超過 10kb 的話,說明不存在大 key。
但某種類型如果存在較多的大key (>10kb),只會(huì)統(tǒng)計(jì) top1 的那個(gè) key,如果要統(tǒng)計(jì)所有大于 10kb 的 key,需要用第三方工具掃描 rdb 持久化文件。
2、使用 memory 命令查看 key 的大小(僅支持 Redis 4.0 以后的版本)
redis-cli -h 127.0.0.1 -p 6379 -a password MEMORY USAGE keyname1 (integer) 157481 MEMORY USAGE keyname2 (integer) 312583
3、使用 Rdbtools 工具包
Rdbtools 是 python寫的 一個(gè)第三方開源工具,用來解析 Redis 快照文件。除了解析 rdb 文件,還提供了統(tǒng)計(jì)單個(gè) key 大小的工具。
1、安裝
git clone https://github.com/sripathikrishnan/redis-rdb-tools cd redis-rdb-tools sudo && python setup.py install
2、使用
從 dump.rdb 快照文件統(tǒng)計(jì), 將所有 > 10kb 的 key 輸出到一個(gè) csv 文件
rdb dump.rdb -c memory --bytes 10240 -f live_redis.csv
到此這篇關(guān)于Redis排查大key的3種方法小結(jié)的文章就介紹到這了,更多相關(guān)Redis排查大key內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis設(shè)置開機(jī)自啟動(dòng)全過程
這篇文章主要介紹了Redis設(shè)置開機(jī)自啟動(dòng)全過程,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-10-10
基于Redis實(shí)現(xiàn)延時(shí)隊(duì)列的優(yōu)化方案小結(jié)
本文主要介紹了基于Redis實(shí)現(xiàn)延時(shí)隊(duì)列的優(yōu)化方案小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
使用Redis實(shí)現(xiàn)用戶積分排行榜的教程
這篇文章主要介紹了使用Redis實(shí)現(xiàn)用戶積分排行榜的教程,包括一個(gè)用PHP腳本進(jìn)行操作的例子,需要的朋友可以參考下2015-04-04
Redis集群服務(wù)器的實(shí)現(xiàn)(圖文步驟)
本文介紹了Redis集群服務(wù)器的優(yōu)勢,為讀者提供了全面的Redis集群服務(wù)器知識和使用技巧,具有一定的參考價(jià)值,感興趣的可以了解一下2023-09-09

