zoukankan      html  css  js  c++  java
  • 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;
  • 相关阅读:
    Liunx用户运行模式
    指令——ps -ef
    文本编辑器vim/vi——末行模式
    文本编辑器vim/vi——模式切换及输入模式
    pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
    Python的numpy库中rand(),randn(),randint(),random_integers()的使用
    python常见面试题
    读取gzmt.csv文件,计算均值及概率
    NumPy数组对象
    写一个带文本菜单的程序,菜单项如下 (1) 取五个数的和 (2) 取五个数的平均值 (X) 退出。
  • 原文地址:https://www.cnblogs.com/Knight7971/p/10156137.html
Copyright © 2011-2022 走看看