redis-rdb-tools这个工具来分析rdb文件,通常定位问题会非常有帮助.
安装redis-rdb-tools
git clone https://github.com/sripathikrishnan/redis-rdb-tools cd redis-rdb-tools sudo python setup.py install
分析是否有较大的value
redis-cli -p 6379 bgsave sudo sh -c 'rdb -c memory dump.rdb > memory.csv' sort -t, -k4nr memory.csv |more
SQL灵活分析
SQLite是一个轻量级的数据库,我们将cvs数据导入到数据库,进行跟灵活的分析,几乎所有版本的 Linux 操作系统都附带 SQLite。
[[email protected]]$sqlite3 redis.db
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .databases
seq name file
--- --------------- ----------------------------------------------------------
0 main /opt/test/redis.db
sqlite> create table redis(database int,type varchar(128),key varchar(128),size_in_bytes int,encoding varchar(128),num_elements int,len_largest_element varchar(128));
sqlite> .mode csv redis
sqlite> .import memory.csv redis
SQLite version 3.6.20
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .databases
seq name file
--- --------------- ----------------------------------------------------------
0 main /opt/test/redis.db
sqlite> create table redis(database int,type varchar(128),key varchar(128),size_in_bytes int,encoding varchar(128),num_elements int,len_largest_element varchar(128));
sqlite> .mode csv redis
sqlite> .import memory.csv redis
分析
select count(*) from redis; select sum(size_in_bytes) from redis; select * from redis order by size_in_bytes desc limit 20; select * from redis where type='list' and num_elements > 200 ;
https://github.com/sripathikrishnan/redis-rdb-tools