zoukankan      html  css  js  c++  java
  • redis rdb 文件分析工具和使用

    redis参考
    目前线上的 redis内存容量急剧增加,已经达到98%了.解决方案除了 扩容 redis内存,还需要分析下线上的数据增加是否符合预期.
    所以需要下载线上的 rdb 文件来分析 数据使用情况.
    目前使用的工具有两个一个 python 的 redis_rdb_tools,另外一个是 golang的rdr.

    redis_rdb_tools

    1. 安装 python
      2.安装 pip
      3.安装rdbtools
    • pip 安装(推荐): pip install rdbtools
    • github上下载源码进行安装
    git clone https://github.com/sripathikrishnan/redis-rdb-tools
    cd redis-rdb-tools
    sudo python setup.py install
    

    4.使用
    例如:

    • 解析rdb文件并向屏幕打印输出json数据
      rdb --command json dump.rdb
      结果:
      [{"fruit":["apple","banana"],
      "webset":{"baidu":"www.baidu.com"},
      "baiduyun":"redis",
      "languages":["python","java"],
      "page_rank":{"baidu.com":"10"}}]

    • 只输出匹配某个key的数据
      rdb --command json --key "fruit" dump.rdb
      结果:
      [{"fruit":["apple","banana"]}]

    • 使用 redis-rdb-tools 生成内存快照,可以查看具体的 key 和过期时间,我们可以重点查看那些没有过期时间的 key,如果是脏数据可以考虑清理一波
      rdb --command memory dump.rdb > memory.csv
      生成 CSV 格式的内存报告。包含的列有:数据库 ID,数据类型,key,内存使用量(byte),编码。内存使用量包含 key、value 和其他值,结果:
      database,type,key,size_in_bytes,encoding,num_elements,len_largest_element,expiry
      0,set,fruit,252,hashtable,2,6,
      0,hash,webset,81,ziplist,1,13,
      0,string,baiduyun,64,string,5,5,
      0,list,languages,161,quicklist,2,6,
      0,sortedset,page_rank,80,ziplist,1,9

    • redis-rdb-tools和mysql进行数据分析
      将redis-rdb-tools产生的csv导入到mysql中,用户就可以根据自己的需求进行更详尽的分析。
      a 创建表格:
      CREATE TABLE memory ( database int(128) DEFAULT NULL, type varchar(128) DEFAULT NULL, key varchar(128), size_in_bytes int(128) DEFAULT NULL, encoding varchar(128) DEFAULT NULL, num_elements int(128) DEFAULT NULL, len_largest_element varchar(128) DEFAULT NULL, expiry varchar(128) DEFAULT NULL, PRIMARY KEY (KEY) );

    b 导入文件:
    load data infile 'memory.csv' into table memory FIELDS TERMINATED BY ',' IGNORE 1 LINES;

    c 展示结果:

    rdr

    更加偏向于整体统计和分析,各个数据结构的占比和某些前缀的的 key 占比情况:
    源码地址
    安装参考
    安装步骤:
    Linux amd64
    $ wget https://github.com/xueqiu/rdr/releases/download/v0.0.1/rdr-linux -O /usr/local/bin/rdr
    $ chmod +x /usr/local/bin/rdr

    MacOS
    $ curl https://github.com/xueqiu/rdr/releases/download/v0.0.1/rdr-darwin -o /usr/local/bin/rdr
    $ chmod +x /usr/local/bin/rdr

    Windows # 浏览器下载下面链接,在点击运行
    https://github.com/xueqiu/rdr/releases/download/v0.0.1/rdr-windows.exe

    rdr 路径:/usr/local/bin/rdr
    /usr/local/bin/rdr show -p 8080 dump.rdb
    /usr/local/bin/rdr keys dump.rdb
    已 mac为例:
    下载下来的文件就是二进制文件,可以直接使用 ./rd-darwin
    用 web页面查看数据分析:
    ./rdr-darwin show -p 8080 ~/Downloads/dump.rdb
    直接访问: localhost:8080即可看到 web分析结果,类似于:

    查看所有的redis key
    ./rdr keys example.rdb

  • 相关阅读:
    使用NetworkX进行社交分析
    文本情感分析
    使用NLTK进行基础的NLP处理
    使用pandas对文本数据进行处理
    文本处理
    分类器可视化
    无监督学习
    监督学习2
    模型验证
    Netty学习摘记 —— 预置SSL / HTTP / WebSocket编解码器
  • 原文地址:https://www.cnblogs.com/djwhome/p/14678328.html
Copyright © 2011-2022 走看看