业务背景:
Redis中的内存在随着业务增长的过程中不断增多,如果大key较多,容易形成性能瓶颈,甚至降低业务稳定性。定期分析内存并根据分析结果优化内存,可以保持服务的稳定和高效。为了不影响线上Redis服务的运行,可以使用BGSAVE命令生成RDB文件,再结合redis-rdb-tools和SQLite进行静态分析。下述操作基于已生成RDB文件的基础上进行分析!
操作步骤:
// ubuntu 安装pip
apt install python-pip
// 安装rdbtools
pip install rdbtools
pip install python-lzf
// 安装 sqlite
apt install sqlite3
// 切换到rdb文件目录,配置文件默认为/var/lib/redis,可通过redis info,config_file字段查看
cd /var/lib/redis
// 生成CSV格式的快照:
rdb -c memory dump.rdb > memory.csv
// 使用sqlite导入数据
sqlite3 memory.db
sqlite> create table memory(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 memory
sqlite>.import memory.csv memory
// 导入数据完成,接下来使用sql查询数据即可