博客
关于我
Redis使用量暴增,快速定位有哪些大key在作怪
阅读量:794 次
发布时间:2023-02-28

本文共 1162 字,大约阅读时间需要 3 分钟。

发现 Redis 使用量突然暴增,紧急扩容 Redis 时不能影响服务运行。扩容后,立即查找原因,突破口是寻找存在哪些大 key。

  • 下载 Redis 的持久化文件 dump.rdb 到本地。Redis 的持久化文件通常以 rdb 格式存储,配置文件中可以找到 dump.rdb 的存储路径。

  • 使用 rdbtools 生成内存报告。rdbtools 是一个用 Python 开发的工具,生成内存报告的命令为 rdb -c memory,将 dump.rdb 文件指定为输入文件,输出到 CSV 文件。注意:rdb 文件越大,生成时间越长。

  • 对生成的内存报告进行排序,找出占用最高的 key。使用 Linux 的 sort 命令按内存列排序,排序结果保存到新的文件中。

  • 查看排序后的前 1000 个数据,进一步确认哪些 key 占用了最多内存。使用 awk 和 head 命令提取关键信息。

  • 计算特定 key 占用的内存总量。使用 grep 和 awk 命令提取相关数据,计算总和。

  • 删除占用最高内存的 key。使用 redis-cli 模糊匹配 key,删除对应的数据。命令为 redis-cli -h 127.0.0.1 -p 6379 keys 'my_ranking_list*' | xargs redis-cli -h 127.0.0.1 -p 6379 del

  • 在本地启动 Redis 加载 dump.rdb 文件时,发现一直 load 失败。经过长时间调试,终于找到原因:Redis 配置文件中 databases 参数需要修改为 256,因为原始 dump.rdb 文件对应的 Redis 实例使用了 256 个数据库,默认值为 16。修改后,Redis 成功加载持久化文件。

    参考资料:

  • FAQ:https://github.com/sripathikrishnan/redis-rdb-tools/wiki/FAQs
  • Redis dump 文件规范:https://github.com/sripathikrishnan/redis-rdb-tools/wiki/Redis-RDB-Dump-File-Format
  • Redis RDB 历史版本:https://github.com/sripathikrishnan/redis-rdb-tools/blob/master/docs/RDB_Version_History.textile
  • Redis-rdb-tools:https://github.com/sripathikrishnan/redis-rdb-tools
  • https://blog.csdn.net/jiangsanfeng1111/article/details/53523581
  • 你可能感兴趣的文章
    PHP SOAP模块的使用方法:NON-WSDL模式
    查看>>
    PHP Socket实现websocket(三)Stream函数
    查看>>
    php Socket通信
    查看>>
    PHP SPL标准库-迭代器
    查看>>
    php static 变量
    查看>>
    PHP Static延迟静态绑定
    查看>>
    php str_pad();
    查看>>
    PHP study 环境变量composer
    查看>>
    PHP trim() 函数
    查看>>
    php unicode编码转成unioce字符(中文)
    查看>>
    php url路径问题和php文件以绝对路径引入
    查看>>
    PHP WebSehll 后门脚本与检测工具
    查看>>
    ReentrantLock源码解析
    查看>>
    PHP XSS攻击防范--如何过滤用户输入
    查看>>
    php zookeeper实现分布式锁
    查看>>
    PHP 中 this,self,parent 的区别、用法
    查看>>
    PHP 中如何高效地处理大规模数据的排序?
    查看>>
    PHP 之ftp客户端类封装实现
    查看>>
    php 代码改进
    查看>>
    php 代码混淆
    查看>>