Linux下redis 集群 批量删除 键

单机形式批量删除可使用xargs指令如下操作:

redis-cli -h 10.190.104.11 -p 6379  keys "user*" | xargs -i redis-cli -h 10.190.104.11 -p 6379  del  {}

如需密码加上-a 参数即可,如需指定某个库加上-n参数即可,例如:

redis-cli -a 密码 -h 10.190.104.11 -p 6379  -n 库号 keys "user*" | xargs -i redis-cli -a 密码 -h 10.190.104.11 -p 6379  -n 库号 del  {}

集群形式批量删除:不能直接使用上述形式,否则会报下列错:
Error: CROSSSLOT Keys in request don’t hash to the same slot

需要编辑shell脚本进行删除如下:

新建脚本

touch redis_del.sh

打开家脚本

vim  redis_del.sh

编辑脚本内容如下:

#!/bin/bash
redis_comm=/usr/local/redis/bin/redis-cli
redis_ser01=172.18.18.107
redis_ser02=172.18.18.108
redis_ser03=172.18.18.109
#redis库未加密码,不需要使用-a,不指定库,不需要使用-n参数
$redis_comm -c -h $redis_ser01  keys $1 | xargs -i ./redis-cli -h $redis_ser01 del {}
$redis_comm -c -h $redis_ser02  keys $1 | xargs -i ./redis-cli -h $redis_ser02 del {}
$redis_comm -c -h $redis_ser03  keys $1 | xargs -i ./redis-cli -h $redis_ser03 del {}

保存并增加可执行权限:
chmod +x redis_del.sh
执行脚本:后面加上参数

./redis_del.sh   user* # 删除以user开头所有redis键

使用redis_del.sh脚本删除:

# ./redis_del.sh  UP* 

Linux下redis 集群 批量删除 键_第1张图片

如上图所示,UP开头的所有key都删除了
返回值为数量则为正确的,返回值为0 则可能发生错误。
参考博文:
https://blog.csdn.net/zhangwenjiang001/article/details/82712382
http://blog.51cto.com/ganbing/2050111

你可能感兴趣的:(redis,Linux)