RedisCluster linux下批量删除 key
Redis Cluster linux下批量删除键
说明
使用时不支持传入参数 , 如 redis_batch_del.sh , 因为在linux下 会自动将 * 解析为当前目录下所有文件名, 目前还没有想到好的解决办法。
如果需要flushall 可以自行加入参数判断, 执行flushall。
代码
#!/usr/bin/env bash ####################################################################################### #使用说明: # 脚本需要设置 三个参数, 即: # 1. redis_home, 注意, 最后没有 / # 2. redis_password # 3. redis_enable_port redis集群中任意可用节点的端口 # 参数设置完毕后, 执行脚本时, 可同时删除多个key, 匹配方式为 redis的 pattern. # 多个参数之间以空格隔开. # 在任意redisCluster的节点上执行即可 # 如 redis_batch_del.sh hello* hhh* *hhh* ####################################################################################### redis_home='/opt/TDS/redis/' #redis密码 redis_password='redis' #redis 任意可用redis 服务端端口 redis_enable_port='7001' #如果没有redis密码, 需要删除 -a $reis_password master_info=(`$redis_home/src/redis-cli -c -a $redis_password -p $redis_enable_port cluster nodes |grep 'master'`) address_array=() #获取所有master节点 for item in ${master_info[@]} do if [[ $item =~ '@' ]] then echo '当前redis的 master 节点为:' $item address_array[${#address_array[*]}]=$item fi done #最终addresses 存储的为 ip port, 例 ${addresses[0]} 为 192.168.0.1 ${addresses[1]} 为 7001 addresses=() for item in ${address_array[@]} do temp_split=(${item//@/ }) ip_port=${temp_split[0]} temp_split=(${ip_port//:/ }) addresses[${#addresses[*]}]=${temp_split[0]} addresses[${#addresses[*]}]=${temp_split[1]} done function del_key_with_pattern() { local length=${#addresses[*]} local index=0 while [ $index -lt $length ] do local port_index=`expr $index + 1` #如果没有redis密码, 需要删除 -a $reis_password local redis_command="$redis_home/src/redis-cli -a $redis_password -c -h ${addresses[${index}]} -p ${addresses[${port_index}]}" #屏蔽错误信息. $redis_command keys $1 2>/dev/null |xargs -i $redis_command del {} >/dev/null 2>&1 echo "清除节点: ${addresses[${index}]}:${addresses[${port_index}]} 的 $1 数据" index=`expr $port_index + 1` done } for item in "" do del_key_with_pattern $item done
相关推荐
王道革 2020-11-25
wangdonghello 2020-11-03
Langeldep 2020-11-16
chenhualong0 2020-11-16
聚合室 2020-11-16
koushr 2020-11-12
MRFENGG 2020-11-11
guoyanga 2020-11-10
fackyou00 2020-11-10
Orangesss 2020-11-03
dongCSDN 2020-10-31
rainandtear 2020-10-30
Quietboy 2020-10-30
liuyulong 2020-10-29
fansili 2020-10-29
温攀峰 2020-10-23
jackbon 2020-10-19
kaixinfelix 2020-10-04