北京师范大学学风建设专题网站,做相册视频的网站,网站优化推广seo公司,建设网站员工招聘策划方案阿里云redis集群对key进行hash后保存在对应的后端节点#xff0c;使每个节点的key数量大致相同#xff0c;但是如果存在大key#xff0c;就会导致单个节点内存用满#xff0c;可以使用redis-rdb-tools 或rdr来对内存进行分析。
redis-rdb-tools
redis-rdb-tools通过对dum…阿里云redis集群对key进行hash后保存在对应的后端节点使每个节点的key数量大致相同但是如果存在大key就会导致单个节点内存用满可以使用redis-rdb-tools 或rdr来对内存进行分析。
redis-rdb-tools
redis-rdb-tools通过对dump.rdb文件进行分析后生成报告通过报告进行内存分析。
redis-rdb-tools是一个python解析rdb文件的工具有以下三个 功能。
生成内存快照转储成json格式使用标准的diff工具比较两个dump文件
安装
安装方式推荐使用pip进行安装
# python-lzf是可选的但强烈建议加快解析速度。
pip install rdbtools python-lzf创建备份
使用bgsave生成rdb文件然后使用redis-rdb-tools对文件进行分析。
生成内存快照
生成内存快照的命令为
rdb -c memory dump.rdb memory.csv生成 CSV 格式的内存报告。包含的列有数据库 ID数据类型key内存使用量(byte)编码。内存使用量包含 key、value 和其他值。
注意内存使用量是理论上的近似值在一般情况下略低于实际值。memory.csv 例子
bogon:helei helei$ head memory.csv
database,type,key,size_in_bytes,encoding,num_elements,len_largest_element,expiry
0,set,b_13540658,444,hashtable,5,10,
0,set,b_27776658,276,hashtable,2,10,分析内存快照
SQLite 是一款轻型的数据库。我们可以将前面生成的 csv 导入到数据库中之后就可以利用 sql 语句很方便的对 Redis 的内存数据进行各种分析了。
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),export varchar(128));
sqlite.mode csv memory
sqlite.import memory.csv memory数据导入以后接下来想怎么分析就怎么分析了举几个简单的例子
# 查询key个数
sqlite select count(*) from memory;
# 查询总的内存占用
sqlite select sum(size_in_bytes) from memory;
#查询内存占用最高的10个 key
sqlite select * from memory order by size_in_bytes desc limit 10;
#查询成员个数1000个以上的 list
sqlite select * from memory where typelist and num_elements 1000 ;rdr
参数文档https://github.com/xueqiu/rdr
参考文档https://github.com/sripathikrishnan/redis-rdb-tools