redis集群批量模糊删除key

首先明确几点:

  1. redis命令行内本身对这功能就没有特别友好的支持
  2. 需要借助linux的xargs命令
  3. 需要目标redis是否集群

话不多说,直接上命令:
redis-cli -h 此处写入redis所在主机IP -p 端口 keys "模糊匹配的表达式" | xargs -n1 redis-cli -h 此处写入redis所在主机IP -p 端口 del

举个例子:
redis-cli -h 192.168.13.107 -p 7012 keys "WC_MSG_SUP_CONTRACT_*" | xargs -n1 redis-cli -h 192.168.13.107 -p 7012 del

解释一下:

  1. xargs后面的 -n1 是集群情况下要加的,不然当集群key的数量大于1是,会报错 (error) CROSSSLOT Keys in request don’t hash to the same slot

  2. 如果看到 (error) ERR wrong number of arguments for ‘del’ command 不要着急,这意思是你前面的redis-cli -h 192.168.20.33 -p 7012 keys "WC_MSG_SUP_CONTRACT_*" 这个命令找出来的key的数量为0,既然为0了,那后面删除报错也没关系了,因为你本来查询的key就不存在的。如果不想看到这样的报错,在xargs后面添加 -r 就可以了

  3. 如果你想看究竟都删除了哪些具体的key,可以在xargs后面添加参数 -t ,不加也是可以的,不加的话输出的就是每条key的数量

你可能感兴趣的:(redis集群批量模糊删除key)