redis 内存分析

一、首先安装pip(最好yum安装,python安装的版本在安装rdbtools时报错)

yum install -y pip
或者编译安装
wget
"https://pypi.python.org/packages/source/p/pip/pip1.5.4.tar.gz#md5=834b2904f92d46aaa333267fb1c922bb" --no-check-certificat
进入文件夹 python setup.py
install

二、安装redis-rdb-tools

1.pypi安装

pip install rdbtools

2.编译安装

git clone https://github.com/sripathikrishnan/redis-rdb-tools
cd redis-rdb-tools
sudo python setup.py install

三、使用redis-rdb-tools

1.开启RDB持久化或者手动生成RDB文件

redis> BGSAVE

2.用rdb生成内存快照

rdb -c memory dump.rdb > memory.csv

生成 CSV 格式的内存报告。包含的列有:数据库 ID,数据类型,key,内存使用量(byte),编码。内存使用量包含 key、value 和其他值。

3.分析内存报告

由于分析报告时csv格式,所以可以有多种分析方式,推荐sqlite和Mysql

1.sqlite分析

sqlite是python的软件库,sqlite无需配置,也没有进程(线程),本身就是个文件,而且支持SQL语句

(1)导入分析报告

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),expiry varchar(50));
sqlite>.mode csv #逗号分隔的值
sqlite>.import memory.csv memory

(2)查看分析报告

查询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 type='list' and num_elements > 1000 ;

2.mysql分析

查看分析与sqlite并无差别,主要差别在于导入(mysql可以略错误,sqlite不能)

create table memory(db int,type varchar(128),keey varchar(128),size_in_bytes int,encoding varchar(128),num_elements int,len_largest_element varchar(128),expiry varchar(50));
LOAD DATA INFILE '/logs/mysql_load/memory.csv' INTO TABLE memory character set latin1 ignore 1 lines;

创建表的时候,由于database,key是敏感词,所以我把database,key这l两列改成了db,keey

我在load data时有字符集的报错,所以该改成了latin1,必要的时候,在没有影响到主要的size_in_bytes数据时,可以添加ignore跳过错误

LOAD DATA INFILE '/logs/mysql_load/memory.csv' ignore INTO TABLE memory ignore 1 lines;

 

转载于:https://www.cnblogs.com/Knight7971/p/10156137.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值