批量删除redis 集群

#!/bin/bash
 
COMMOND_HOME=/etc/bin/redis-cli
pattern=$1
masterNodeAdress=192.168.0.168
masterNodePort=7000
password=
echo "batch del keys ${pattern}" 
#batch del redis cluster
#1. fetch master nodes hostandport

echo "1. fetch master nodes hostandport"
HostAndPort=`${COMMOND_HOME} -c -h ${masterNodeAdress} -c -p ${masterNodePort} -a ${password} cluster nodes|grep master|awk '{print $2}'|awk -F "@" '{print $1}'`
 
#2. iter HostAndPort array to del keys by pattern
echo "2. iter HostAndPort array to del keys by pattern"
for node in ${HostAndPort[@]}
  do
    echo "start batch del ${node} keys ${pattern}"
    ip=`echo ${node}|cut -d : -f 1`
    port=`echo ${node}|cut -d : -f 2`
    items=`${COMMOND_HOME} -h ${ip} -p ${port} -a ${password} scan 0 match ${pattern} count 6000 |awk 'NR>1 {print $1}'`
    echo "${items[@]}"
    for key in ${items}
    	do
    		formateKey=`echo ${key}|awk '{print $1}'`
    		echo "${COMMOND_HOME} -c -h ${ip} -p ${port} -a ${password} del ${formateKey[@]} hello"
    		${COMMOND_HOME} -c -h ${ip} -p ${port} -a ${password} del ${formateKey[@]}
    		sleep 0.5   
    	done
  done
echo "completed"