背景


Redis Cluster 没有开放公网访问,不能从开发机直接连接,只能从集群内部连接。开发要操作这个 Redis Cluster,就需要先登陆集群内部某个中转机,在使用命令行访问。

比如,要删除匹配的键,一般这样操作: shell kubectl exec -it jump-machine -- sh 成功进入中转机

redis-cli -c -h redis-cluster-host --scan --pattern key

the-key-pattern-1 the-key-pattern-2 ...

查出键后,再进行删除

redis-cli -c -h redis-cluster-host DEL the-key-pattern-1 (1)

redis-cli -c -h redis-cluster-host DEL the-key-pattern-2 (1)

redis-cli -c -h redis-cluster-host DEL the-key-pattern-3 (1)

简化


如果能够一行命令完成上面所有的操作,那么将非常省心,节约时间和方便自动化。通过利用 xargs 可以完成简化: shell kubectl exec -it jump-machine -- sh -c redis-cli -c -h redis-cluster-host --scan --pattern key | xargs -i redis-cli -c -h redis-cluster-host DEL {}

注意点

  1. 将需要在中转机上执行的命令使用单引号括起来,这很重要
  2. 最后的 {} 也很重要,否则会遇到这样的错误: (error) CROSSSLOT Keys in request dont hash to the same slot