redis内存语义分析

  1. 云栖社区>
  2. 博客>
  3. 正文

redis内存语义分析

~信~仰~ 2018-09-28 17:58:01 浏览1189
展开阅读全文

内存语义分析

测试环境redis服务出现异常, 为了排查错误对redis内存进行了分析.

分析redis内存

1) 安装redis-rdb-tools: Linux下执行: pip install rdbtools(先安装python-pip才能使用pip命令)

2) 找到redis的dump.rdb文件
3) 执行rdb -c memory dump.rdb > memory.csv
生成的memory.csv就是分析文件了.
附:
dump.rdb文件是redis快照的结果,也就是将数据库中的数据保存到硬盘,防止redis意外重启后数据丢失的。redis每次启动时,都会先去找这个文件,将里面的数据导入数据库中,如果没有找到这个文件就会重新建立一个,如果找到了,但是被清空了,对不起,你的数据也就丢失了。

  • dump文件保存路径请见redis.conf:
    # The filename where to dump the DB
    dbfilename dump.rdb

    # The working directory.
    #
    # The DB will be written inside this directory, with the filename specified
    # above using the 'dbfilename' configuration directive.
    #
    # The Append Only File will also be created inside this directory.
    #
    # Note that you must specify a directory here, not a file name.
    dir /var/lib/redis

查看分析结果

database,type,key,size_in_bytes,encoding,num_elements,len_largest_element
0,string,cache_area_cityOfProvince_34,168,string,81,81
0,string,cache_hour_transaction_num_05-10,2672,string,2205,2205
0,string,cache_banner_app_home,384,string,291,291
0,string,cache_hour_transaction_num_05-27,1648,string,1393,1393
0,string,cache_hour_transaction_num_05-31,368,string,233,233
0,string,cache_hour_transaction_num_06-05,880,string,639,639
0,string,cache_day_play_count_05-19,1384,string,1255,1255
0,list,logstash,3319374989,quicklist,7660698,34240
0,list,watch_order_48_615,189,quicklist,1,32
...

字段含义依次为: 数据库ID,数据类型,key,内存使用量(byte),编码。内存使用量包含key、value和其他值。

分析可得, key为'logstash'的内容最大, 为3319374989字节(3165.6Mb); 远超其他正常值, 定位原因.

参考链接:https://yq.aliyun.com/articles/62899

网友评论

登录后评论
0/500
评论
~信~仰~
+ 关注