0
点赞
收藏
分享

微信扫一扫

运维工具2-检测redis中占内存的大键

1测试准备

[root@db04 ~]# vim mytxt.log #创建一个大文件
[root@db04 ~]# redis-server /opt/redis_cluster/redis_6379/conf/redis_6379.conf #启动redis
[root@db04 ~]# redis-cli set txt $(cat mytxt.log) #将大文件存入redis
[root@db04 ~]# redis-cli get txt > test.txt #从redis里导出key,看看是否内容正确
[root@db04 ~]# cat test.txt #查看导出的内容

 2安装工具:

[root@db04 ~]# yum install python-devel python-pip
[root@db04 ~]# pip install rdbtools
[root@db04 ~]# pip install python-lzf

 3利用工具分析出大文件

127.0.0.1:6379> bgsave #将当前数据保存为rdb文件
Background saving started
127.0.0.1:6379>
[root@db04 ~]# cd /data/redis_cluster/redis_6379
[root@db04 redis_6379]# ls
redis_6379.rdb
[root@db04 redis_6379]# ll
总用量 24
-rw-r--r--. 1 root root 21718 4月 19 20:52 redis_6379.rdb #看一下日期是不是刚才保存的rdb文件
[root@db04 redis_6379]# date
2021年 04月 19日 星期一 20:54:00 CST
[root@db04 redis_6379]# cp -a redis_6379.rdb /root/
[root@db04 redis_6379]# cd ~
[root@db04 ~]# ls
anaconda-ks.cfg dump.rdb input_key.sh mytxt.log redis_6379.rdb redis_6379_to_6380.conf test.txt
[root@db04 ~]# rdb -c memory redis_6379.rdb -f 6379_memory.csv #将rdb文件导入到内存并将分析结果另存为6379_memory.csv
[root@db04 ~]# ll 6379_memory.csv
-rw-r--r--. 1 root root 38010 4月 19 20:57 6379_memory.csv
[root@db04 ~]# awk -F"," '{print $3,$4}' 6379_memory.csv |sort -k2 >sort.txt #过滤结果导出至sort.txt

[root@db04 ~]# awk -F"," '{print $4,$3}' 6379_memory.csv |sort -rn |head -10 #也可以用这种方式查看最大的key是谁
1328 txt
64 K20210418_999
64 K20210418_998
64 K20210418_997
64 K20210418_996
64 K20210418_995
64 K20210418_994
64 K20210418_993
64 K20210418_992
64 K20210418_991
[root@db04 ~]#
找到最大的key后,拿着这个key去问开发和老大,如果没用的话你就把这个key给删除掉,从而解决空间被占满的问题,注意;删之前要想将rdb文件备份一下,防止有问题时没办法恢复

 4删除大key:

[root@db04 ~]# cp /data/redis_cluster/redis_6379/redis_6379.rdb{,.bak} #先备份rdb文件
[root@db04 ~]# ll /data/redis_cluster/redis_6379
总用量 72
-rw-r--r--. 1 root root 21718 4月 19 20:52 redis_6379.rdb
-rw-r--r--. 1 root root 21718 4月 19 21:41 redis_6379.rdb.bak
[root@db04 ~]# redis-cli
127.0.0.1:6379> del txt #再删除大的key文件
(integer) 1
127.0.0.1:6379> get txt #验证是否删除

5恢复数据:

[root@db04 ~]# redis-cli
127.0.0.1:6379> shutdown #停止redis
not connected>
[root@db04 ~]# mv /data/redis_cluster/redis_6379/redis_6379.rdb.bak /data/redis_cluster/redis_6379/redis_6379.rdb #从备份中恢复数据
[root@db04 conf]# redis-server /opt/redis_cluster/redis_6379/conf/redis_6379.conf #启动redis
[root@db04 conf]# redis-cli #登录redis
127.0.0.1:6379> get txt #查看这个key是否已经回来了

 

 

1

1

1

 



举报

相关推荐

0 条评论