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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM