分析redis中大key的几种办法
總結
1. 游戲已經(jīng)上線幾個月了,redis使用超過2G,今天有空就想著分析下redis中是否有大key,是否影響性能,結果查來查去,愣是沒找到一個好用的辦法,因為我們的redis是買騰訊云的,操蛋的騰訊云對redis做了諸多限制,fuck
2. 先說下幾種常用的辦法吧
辦法1: DEBUG OBJECT [要查的key名字] ?
優(yōu)點:查詢指定的單個key,很方便 ? ?
缺點:只能查指定的key,且不精確,不能做整體分析,而且騰訊云的redis不讓使用
示例(查詢key:hall:player:used_showIDs的內存使用):
辦法2: ?bigkeys命令
優(yōu)點:內部使用scan遍歷所有key,對不同的類型會使用不同的命令,計算出其中的元素個數(shù),而且不會造成redis阻塞,可以分析整個redis,做出準確的整體分析 ? ?
缺點:占用內存分析得不夠精確,而且騰訊云的redis不讓使用
示例(分析筆者自己使用的redis里面的數(shù)據(jù),但是騰訊云的redis這個命令被禁止使用)
辦法3:memory usage?[要查的key名字] ?
優(yōu)點:查詢指定的單個key,很方便,且準確
缺點:只能查指定的key,不能做整體分析,而且騰訊云的redis不讓使用
示例(查詢key:hall:player:used_showIDs的內存使用):
辦法4:?rdb_bigkeys工具
優(yōu)點:不影響線上的redis運行,只需要來個RDB持久化,下載文件,即可隨意分析,而且可以分析得很準確? ?
缺點:麻煩一些,因為要先拿到RDB文件,把工具編譯好后才能用。而且騰訊云的不適用,因為解析錯誤,真fuck了,筆者還在分析方案,好蛋疼
rdb_bigkeys 工具的安裝教程,請參看筆者的這篇博客
https://blog.csdn.net/yzf279533105/article/details/109105691
示例
1. 連接到redis,運行命令BGSAVE,產(chǎn)生rdb文件
2. 跟工具 rdb_bigkeys 放在同一個目錄下,運行命令
./rdb_bigkeys --bytes 1024 --file bigkeys_1024.csv --sep 0 --sorted --threads 4 dump.rdb
--bytes ?用來指定過濾那些占用字節(jié)數(shù)大于1024字節(jié)的key
--file ? ? ?用來指定輸出分析結果的文件名字
--sorted 表需要排序,由大到小
--threads 表使用的線程數(shù)
最后的dump.rdb是分析的rdb文件名字
效果如下圖
3. 打開bigkeys_1024.csv文件,如下
database表
?
總結
以上是生活随笔為你收集整理的分析redis中大key的几种办法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis-cli 命令详解
- 下一篇: 安装使用大key工具rdb_bigkey