redis分析big key的方法


【背景】

對redis數據庫分析big key的方法步驟

【方法】

1、redis-cli自帶--bigkeys,例如:redis-cli -h <hostip> -a <password> --bigkeys
2、獲取生產Redis的rdb文件,通過rdbtools分析rdb生成csv文件,再導入MySQL或其他數據庫中進行分析統計,根據size_in_bytes統計bigkey
3、使用redisinsight分析
4、其他第三方工具,例如:redis-rdb-cli 地址:https://github.com/leonchen83/redis-rdb-cli

【使用】

redis-cli -h <hostip> -a <password> --bigkeys

 

 

rdbtools分析

地址:https://github.com/sripathikrishnan/redis-rdb-tools
pip install rdbtools python-lzf
git clone https://github.com/sripathikrishnan/redis-rdb-tools
cd redis-rdb-tools
sudo python setup.py install

生成內存報告
> rdb -c memory /var/redis/6379/dump.rdb --bytes 128 -f memory.csv

 

輸出字段說明:
database :key在redis的db
type :key類型
key :key值
size_in_bytes :key的內存大小(byte)
encoding :value的存儲編碼形式
num_elements :key中的value的個數
len_largest_element :key中的value的長度
expiry :key過期時間

 

可以導入MySQL中進行SQL查詢分析

創建表:

CREATE TABLE `parse_redis_memory` (
`database` int(128) DEFAULT NULL,
`type` varchar(128) DEFAULT NULL,
`KEY` varchar(1000) not NULL,
`size_in_bytes` bigint(20) DEFAULT NULL,
`encoding` varchar(128) DEFAULT NULL,
`num_elements` bigint(20) DEFAULT NULL,
`len_largest_element` varchar(128) DEFAULT NULL,
`expiry` int(128) DEFAULT NULL
);

可以直接用Navicat導入,根據SQL查詢key信息

1、查詢key的個數
select count(*) from memory;

2、查詢總的內存占用
select sum(size_in_bytes) from memory;

3、查詢內存占用最高的10個key
select * from memory order by size_in_bytes desc limit 10;

4、查詢value個數1000個以上的list
select * from memory where type='list' and num_elements > 1000;

效果:

 

 

生成HTML報告

redis-profiler yufab.rdb -f yufab.html

 

 

使用redisinsight導入rdb文件分析

 

 分析結果

 

 

使用其他第三方工具,例如:redis-rdb-cli 

待補充

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM