redis内存分析

  1.  生成内存快照dump.rdb
  2.  安装 redis-rdb-tools 
  3.  使用redis-rdb-tools生成内存报告
  4.  将报告导入mysql,进行分析,或者使用excel、脚本统计

     

1、生成dump.rdb,使用redis客户端,执行bgsave命令,生成dump.rdb快照

2、安装redis-rdb-tools

       源码安装

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

       或者

       pip install rdbtools

3、使用redis-rdb-tools生成内存报告

      rdb -c memory d:\redis\dump.rdb > redis_memory_report.csv

4、使用python脚本统计

      列头

      database,type,key,size_in_bytes,encoding,num_elements,len_largest_element,expiry

       取size_in_bytes

脚本如下:

脚本统计以数组内容开头的key


#!/usr/bin/python
# -*- coding:UTF-8 -*-

import csv;


def analysis_json_report(key_list):
    report_all = csv.reader(open('E:\\redis\\redis_memory_report.csv'))
    
    result_list = {}
    
    result_list["other"] = (long) (0)
    for report in report_all:
        if report.__len__() <= 4:
            continue
        isexists = False 
        for key in key_list:
            if report[2].startswith(key) == True:
                try:
                    isexists = True
                    if result_list.get(key) == None or result_list.get(key) == "":
                        result_list[key] = (long) (report[3])
                    else:
                        result_list[key] = (long)(result_list.get(key)) + (long)(report[3])
                    break
                except BaseException , e:
                    print result_list
        if isexists == False:
            try:
                result_list["other"] = (long)(result_list.get("other")) + (long)(report[3])
                #result_list[report[2]] = (long) (report[3])
            except BaseException , e:
                print "error skip : " + str(report[2])
                
            # print report[2]
        
    with open('E:\\redis\\memory_report.csv', "wb+") as csvfile: 
        writer = csv.writer(csvfile)
        for result in result_list:
            result_list[result] = result_list[result] / 1024 / 1024
            writer.writerow([result, result_list[result]])
    print 'finished'


def main():
    key_list = ['xx',
                'yy',
                'tt']
    analysis_json_report(key_list)


if __name__ == '__main__':
    main()
 

redis-migrate-tool:Redis 集群迁移工具,基于redis复制,快速,稳定

 

     

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值