基于redis key占用内存量分析


本文整理自网络,侵删。

Redis的指令看不出哪一类型的key,占用了多少内存,不好分析redis内存开销大的情况下,各应用程序使用缓存的占比。

借助第3方工具进行分析

1、采用2个工具结合

redis-rdb-tools+sqlite

2、sqlite linux服务器都会自带,安装redis-rdb-tools

使用pip安装 pip install redis-rdb-tools

源码安装

git clone https://github.com/sripathikrishnan/redis-rdb-tools

cd redis-rdb-tools

python setup.py install

如果不成功安装 yum install python-setuptools

3、获取对应redis的rdb文件,使用redis-rdb-tools生成内存快照

rdb -c memory dump.rdb > memory.csv

注意:内存使用量是理论上的近似值,在一般情况下,略低于实际值

4、把数据导入sqlite(mysql数据库实际上都能导入),sqlite语法和mysql基本一致

splite3 test.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),time varchar(128));
sqlite>.mode csv memory
sqlite>.import memory.csv memory

5、查询

查询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;

补充知识:Redis使用量暴增,快速定位有哪些大key在作怪

发现redis使用量突然暴增,于是紧急扩容redis,不能影响服务运行。扩容之后,赶紧查找原因,突破口就是寻找存在哪些大key。

阅读剩余部分

相关阅读 >>

ruby rails框架安装详细图文教程(附ruby下载)

golanggorm框架数据库的连接操作示例

c#操作Sqlite实现数据的增删改查

Sqlite教程(一):Sqlite数据库介绍

Sqlite 入门教程一 基本控制台(终端)命令

仿orm自动生成分页sql分享

开源 5 款超好用的数据库 gui 带你玩转 mongodb、redis、sql 数据库(推荐)

Sqlite 入门教程三 好多约束 constraints

android sharepreferences与数据库Sqlite存储实现方法介绍

详解android文件描述符

更多相关阅读请进入《Sqlite》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...