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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程