zoukankan      html  css  js  c++  java
  • Redis占用大量内存问题分析

    1 安装rdbtools

    pip install rdbtools
    

    没有pip命令,请自行百度安装pip命令

    2.复制redis文件

    首先cp一份dump.rdb到另外的目录(一般redis的持久化以rdb的方式存储,在redis配置文件可以找到dump.rdb的存储路径)

    # cp /Redis_Data/dump.rdb /root/dump.rdb
    

    3.生产内存报告

    用rdbtools工具生产内存报告,命令是 rdb -c memory,例子:

    sudo rdb -c memory  /root/dump.rdb > /root/test.csv
    

    rdb文件越大,生成时间就長久

    4.排序

    报告生成后,结合用linux sort命令排序,根据內存列排序,找出最高的key有哪些。例子:

    sudo sort -k4nr -t , test.csv > sort.txt
    

    5.查看大量占用内存Key

    # less sort.txt
    

    观察文件前面大量出现的相同数据

    查看sort.txt的结果,一般能得出类似‘search:logresult’开头的集合占用最高,排在了前面。若要查看类似‘search:logresult’开头的总共占用了多少内存,可以用命令:

    sudo cat sort.txt | grep ‘search:logresult’ | awk -F ',' '{sum += $4};END {print sum}'
    

    6.删除key

    我们得知了search:logresult这样的集合占用最多内存,而且很可能是业务已经不再需要,但是长期在内存中没清理的,我们可以删除了这些集合,可以用模糊匹配key来删除,命令如下:

    可以使用redis客户端软件,进行键删除(使用客户端删除key)

    可以使用命令删除(未亲测,请谨慎使用)

    redis-cli -h 127.0.0.1 -p 6379  keys 'search:logresult*' | xargs redis-cli -h 127.0.0.1 -p 6379 del
    

    转载和参考文档

    - https://my.oschina.net/u/2394701/blog/1556379
    
    - https://www.cnblogs.com/cheyunhua/p/10598181.html
    
  • 相关阅读:
    codevs 1164 统计数字
    codevs 2597 团伙
    codevs 1472 体检
    Openjudge 1.13-21:最大质因子序列
    Openjudge 1.13-23:区间内的真素数
    codevs 1388 砍树
    codevs 1536 海战
    codevs 3110 二叉堆练习3
    codevs 2879 堆的判断
    Openjudge 1.13.37:乒乓球
  • 原文地址:https://www.cnblogs.com/evescn/p/12397085.html
Copyright © 2011-2022 走看看