yzqzs 发表于 2018-11-3 08:56:09

redis集群批量删除指定的key-DevOps(甘兵)

  1、说明
  redis集群上有时候会需要删除多个key,就必须需要登录到每个节点上,而且有可能这个key不在这个节点,这样删除起来就比较麻烦,下面提供一种便捷方式可以实现
  2、查看redis集群中的master节点
  首先你要确认有哪几台master节点,可以用下面命令查看:
  #./redis-clicluster nodes | grep master

  PS:在这里我有3台master主节点,端口都是6379
  3、编写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_comm -c -h $redis_ser01keys $1 | xargs -i ./redis-cli -h $redis_ser01 del {}
  $redis_comm -c -h $redis_ser02keys $1 | xargs -i ./redis-cli -h $redis_ser02 del {}
  $redis_comm -c -h $redis_ser03keys $1 | xargs -i ./redis-cli -h $redis_ser03 del {}
  参数说明:
  -c:启动集群模式进入redis集群服务
  -h:redis主机地址
  xargs -i: -i 选项告诉 xargs 可以使用{}代替传递过来的参数
  4、使用redis_del.sh脚本
  比如,我们现在有个需求,要删除redis集群以UP开头所有的key。

[*]  首先,我们先登录redis集群,查看一下:


[*]  然后,使用redis_del.sh脚本删除:
  # ./redis_del.shUP*

  PS:如上图所示,UP开头的所有key都删除了

[*]  脚本用法:shredis_del.shkey参数
  例如,你要删除其它key值:
  ./redis_del.sha*      #删除以a开头的key值
  ./redis_del.shb*      #删除以b开头的key值
  或者,删除以什么结尾的keys值:
  ./redis_del.sh   *ab      #删除以ab结尾的key值
  ./redis_del.sh   *123      #删除以123结尾的key值
  ......等等
  好了,觉得有用的朋友可以转发或者收藏,大家有问题可以在下面留言一起探讨,有更好的建议也可以在评论区贴出来!!!

页: [1]
查看完整版本: redis集群批量删除指定的key-DevOps(甘兵)