页面“Awk skill”与“Redis批量删除key”之间的差异

来自linux中国网wiki
(页面间的差异)
跳到导航 跳到搜索
 
 
第1行: 第1行:
=awk 打印最后一列=
+
[[category:ops]] [[category:redis]] 
 +
 
 +
[[Redis-bigkeys]]
 +
=redis cluster 批量删除key=
 
<pre>
 
<pre>
容易混淆的两个变量:NF和$NF两个变量
+
#June 19 2020  有空结果一下原来的版本再优化一下
NF是处理行中域的个数
+
cat redis_del_key.sh
$NF 是输出处理行中最后一个域的内容
+
#!/bin/bash
$1 处理行中第一个域的内容 ,依此类推
+
# Usage
 +
#redis_list=("host:post" "host:post")
 +
 
 +
redis_list=( "172.16.200.12:7003" "172.16.200.7:7004" "172.16.200.7:7005" "172.16.200.13:7000" "172.16.200.13:7001" "172.16.200.12:7002")
 +
#redis_list=( "172.16.200.13:7000" "172.16.200.13:7001" "172.16.200.12:7002")
 +
#redis_list=("172.16.200.7:7004")
 +
password="3636password"
 +
 
 +
for info in ${redis_list[@]}
 +
    do
 +
        echo "开始执行:$info" 
 +
        ip=`echo $info | cut -d : -f 1`
 +
        port=`echo $info | cut -d : -f 2`
 +
 
 +
      for  loop in  `cat key.txt`
 +
        do
 +
        #echo $loop  |xargs -t -n1 redis-cli -c  -h $ip -p $port -a $password -c del
 +
        echo $loop  |xargs -t -n1 redis-cli -c  -h $ip -p $port -a $password -c keys
 +
        done
 +
 
 +
    done
 +
    echo "success done完成"
 +
 
 +
# cat key.txt
 +
infnce:wonderfulCache
 +
ext_info
 +
 
 +
 
 +
 
 +
#原来的版本
 +
 
 +
del hello_user_*
 +
 
 +
redis-cli keys
 +
 
 +
 
 +
redis-cli keys "hello_user_*" | xargs redis-cli del
 +
 
 +
 
 +
./redis-cli -h IP -p PORT -a PASSWORD keys 'key*' | xargs  ./redis-cli -h IP  -p PORT -a PASSWORD del
  
  sudo netstat -nlpt
+
redis-cli    -c -h    172.31.22.218  -p 7000 -a pass keys 'hello_user_*'| xargs -i redis-cli    -c  -h    172.31.22.218  -p 7000  -a pass  del {}
 +
redis-cli    -c  -h    172.31.22.218  -p 7001  -a pass keys 'hello_user_*'| xargs -i redis-cli    -c  -h    172.31.22.218  -p 7001  -a pass  del {}
  
Proto Recv-Q Send-Q Local Address          Foreign Address        State      PID/Program name    
+
redis-cli    -c  -h    172.31.16.135  -p 7002  -a pass keys 'hello_user_*'| xargs -i  redis-cli   -c  -h    172.31.16.135  -p 7002 -a pass  del {}
tcp        0      0 127.0.0.1:3306          0.0.0.0:*              LISTEN      939/mysqld         
+
redis-cli    -c  -h    172.31.16.135  -p 7003  -a pass keys 'hello_user_*'| xargs  -i redis-cli    -c  -h    172.31.16.135  -p 7003 -a pass  del {}
  
tcp        0      0 0.0.0.0:22              0.0.0.0:*              LISTEN      741/sshd           
+
redis-cli    -c  -h    172.31.23.43  -p 7004  -a pass keys 'hello_user_*'| xargs -i  redis-cli    -c  -h    172.31.23.43  -p 7004 -a pass  del {}
tcp        0      0 127.0.0.1:7070          0.0.0.0:*              LISTEN      2566/ss-local     
+
redis-cli    -c  -h    172.31.23.43  -p 7005  -a pass keys 'hello_user_*'| xargs -i  redis-cli    -c  -h    172.31.23.43  -p 7005 -a pass  del {}
  
tcp6      0      0 :::21                  :::*                    LISTEN      696/vsftpd         
 
tcp6      0      0 :::22                  :::*                    LISTEN      741/sshd           
 
evan@latop:~/rpm/centos7/nginx/SPECS$ sudo netstat  -nlpt | awk '{print $NF}'
 
servers)
 
name
 
939/mysqld
 
741/sshd
 
2566/ss-local
 
696/vsftpd
 
741/sshd
 
  
</pre>
 
  
 +
#!/bin/bash
 +
redis_comm=/usr/local/redis-5.0.3/bin/redis-cli
 +
redis_ser01=192.168.50.175
 +
redis_ser02=192.168.50.174
 +
$redis_comm -c -h $redis_ser01  -p 7001 -a xxx  keys $1 | xargs -i $redis_comm -c -h $redis_ser01  -p 7001 -a xxx del {}
 +
$redis_comm -c -h $redis_ser02  -p 7001 -a xxx  keys $1 | xargs -i $redis_comm -c -h $redis_ser02  -p 7001 -a xxx del {}
 +
 +
运行:
 +
 +
./redis_del_key.sh  匹配的key*
 +
 +
err 
 +
 +
-i  {} 都是一定要的
 +
 +
redis-cli -n 0 keys "test*" | xargs redis-cli -n 0 del
 +
(error) CROSSSLOT Keys in request don't hash to the same slot
  
 +
</pre>
  
cat b | awk NR%2==1 #单数行
 
 
=see also=
 
=see also=
[http://blog.linuxchina.net/?p=1467 awk中的NR和FNR的区别]
 
  
[https://blog.csdn.net/stpeace/article/details/46848873 awk基本用法简介]
 
  
[https://blog.csdn.net/david_xtd/article/details/25888907 awk取最后一列]
+
[https://blog.csdn.net/yangyangye/article/details/100523387  redis集群批量删除模糊key shell脚本]
  
[https://blog.csdn.net/liuxiao723846/article/details/55003749?utm_source=blogxgwz8 awk:打印某列以后的所有列]
+
[https://www.cnblogs.com/feng0520/p/11067025.html  redis cluster集群批量删除中的key]
  
[https://blog.csdn.net/aywb1314/article/details/52239281 使用awk命令获取文本的某一行,某一列]
+
[https://my.oschina.net/u/1255588/blog/1563672 Redis集群批量删除key]
  
 +
[https://blog.csdn.net/zj20142213/article/details/80879744  redis集群批量删除指定的key]
  
[[category:shell]]
+
https://blog.csdn.net/qq_36090419/article/details/80537684

2020年6月22日 (一) 11:37的版本


Redis-bigkeys

redis cluster 批量删除key

#June 19 2020   有空结果一下原来的版本再优化一下 
cat redis_del_key.sh
#!/bin/bash
# Usage 
#redis_list=("host:post" "host:post")

redis_list=( "172.16.200.12:7003" "172.16.200.7:7004" "172.16.200.7:7005" "172.16.200.13:7000" "172.16.200.13:7001" "172.16.200.12:7002")
#redis_list=( "172.16.200.13:7000" "172.16.200.13:7001" "172.16.200.12:7002")
#redis_list=("172.16.200.7:7004")
password="3636password"

for info in ${redis_list[@]}
    do
        echo "开始执行:$info"  
        ip=`echo $info | cut -d : -f 1`
        port=`echo $info | cut -d : -f 2`

      for  loop in  `cat key.txt`
         do
         #echo $loop  |xargs -t -n1 redis-cli -c  -h $ip -p $port -a $password -c del
         echo $loop  |xargs -t -n1 redis-cli -c  -h $ip -p $port -a $password -c keys 
         done

    done
    echo "success done完成"

# cat key.txt 
infnce:wonderfulCache
ext_info



#原来的版本

del hello_user_* 

redis-cli keys


 redis-cli keys "hello_user_*" | xargs redis-cli del


./redis-cli -h IP -p PORT -a PASSWORD keys 'key*' | xargs  ./redis-cli -h IP  -p PORT -a PASSWORD del

redis-cli    -c  -h    172.31.22.218   -p 7000  -a pass keys 'hello_user_*'| xargs -i redis-cli    -c  -h    172.31.22.218   -p 7000  -a pass  del {}
redis-cli    -c  -h    172.31.22.218   -p 7001  -a pass keys 'hello_user_*'| xargs -i redis-cli    -c  -h    172.31.22.218   -p 7001  -a pass  del {}

redis-cli    -c  -h    172.31.16.135  -p 7002  -a pass keys 'hello_user_*'| xargs -i  redis-cli    -c  -h    172.31.16.135   -p 7002 -a pass  del {}
redis-cli    -c  -h    172.31.16.135  -p 7003  -a pass keys 'hello_user_*'| xargs  -i redis-cli    -c  -h    172.31.16.135   -p 7003 -a pass  del {}

redis-cli    -c  -h     172.31.23.43   -p 7004  -a pass keys 'hello_user_*'| xargs -i  redis-cli    -c  -h    172.31.23.43   -p 7004 -a pass  del {}
redis-cli    -c  -h     172.31.23.43   -p 7005  -a pass keys 'hello_user_*'| xargs -i  redis-cli    -c  -h    172.31.23.43   -p 7005 -a pass  del {}



#!/bin/bash
redis_comm=/usr/local/redis-5.0.3/bin/redis-cli
redis_ser01=192.168.50.175
redis_ser02=192.168.50.174
$redis_comm -c -h $redis_ser01  -p 7001 -a xxx  keys $1 | xargs -i $redis_comm -c -h $redis_ser01  -p 7001 -a xxx del {}
$redis_comm -c -h $redis_ser02  -p 7001 -a xxx  keys $1 | xargs -i $redis_comm -c -h $redis_ser02  -p 7001 -a xxx del {}

运行:

./redis_del_key.sh  匹配的key*

err  

-i  {} 都是一定要的 

redis-cli -n 0 keys "test*" | xargs redis-cli -n 0 del
(error) CROSSSLOT Keys in request don't hash to the same slot

see also

redis集群批量删除模糊key shell脚本

redis cluster集群批量删除中的key

Redis集群批量删除key

redis集群批量删除指定的key

https://blog.csdn.net/qq_36090419/article/details/80537684