如今越来越来的系统中使用redis作为缓存系统,但是随着用户量的增长,业务数据不断增多,redis服务器的内存空间有可能会到瓶颈了,及时观察redis中的各种键内存占用多少,会方便我们评估何时升级redis服务器规格,以及对于是否需要进行程序优化来设计合理的存储结构都会有很大帮助,下面给大家介绍两款工具rdr和redisrdbtools,可以很好的满足我们的需要 redis内存分析redisserver版本3。2rdr版本0。0。1redisrdbtools版本0。1。15rdr工具的使用 RDR(redisdatareveal)是一个用于解析redisrdb备份文件的工具。基于golang实现,可以实现根据rdb文件生成一份详细的内存占用数据报告,并且能在本地启动一个server进程,在网页中呈现出美观的数据报告 详细使用参考官方仓库:https:github。comxueqiurdr安装 rdr提供了linuxOSXWindows下的可执行文件,直接点击下载,我这里演示Windows下的使用方式 下载下来后存储到d:dev路径下 使用方式 1。首先要去redis服务器端将rdb文件复制到本地,为了方便,我将rdb文件放到了rdr工具所在目录 这里再说下redisrdb文件该怎么找到,通过查看redis服务器配置文件redis。conf,搜索dbfilename可以快速定位到该配置,按照路径就可以找到redisrdb备份文件了 rdbconfig 2。在rdr工具所在的路径下打开命令行窗口,执行指令rdrwindows。exeshowdump。rdb 可以看到指令执行成功后,在本地启动了server,监听端口8080 3。打开浏览器,访问http:localhost:8080,能看到详细的内存占用数据报告,包括键数量、不同的数据类型、元素计数等 不过通过网页版的数据报告中有个小问题,对于redis中的不同数据库没有明显的区分展示,混在一起,不是太清晰redisrdbtools工具的使用 采用python实现的rdb文件解析工具,这个可以支持单个key的内存占用情况查询 详细使用参考官方仓库:https:github。comsripathikrishnanredisrdbtools安装 1。安装python环境,我这里安装了python2。7。15 2。通过pip安装redisrdbtoolspipinstallrdbtoolspythonlzf 我这里pythonlzf库没有安装成功,不过不影响实际使用,这个库是为了加速rdb文件解析速度使用方式 3。安装完成后就可以在命令行中使用了,输入指令生成内存报告文件rdbcmemorydump。rdbfredismemory。csv 等待一段时间,命令阻塞执行完成后,就会在f参数指定的路径下生成对应的文件 用excel打开生成的csv文件,可以看到详细的统计结果,包含了所有数据库下所有key的内存占用情况 redisrdbtools中还带了一个很有用的命令,能帮助我们直接查询单个key的内存占用情况,命令格式如下redismemoryforkeysredis服务器地址predis服务器端口aredis服务器密码dredis数据库序号key名称 执行测试下效果,可以看到命令执行完成后,直接回显出指定key对应的内存占用情况了 注意该操作在生产环境下慎用,视key大小情况再行决定是否执行,有可能会阻塞执行很长时间才能计算出结果