我需要删除我的 redis 集群中的一些键,这些键只能从部署在 kubernetes 集群中的跳转机访问。
因此,如果我知道密钥,我可以通过以下命令毫无问题地删除它:
➜ kubectl exec -it jump-machine -- /usr/local/bin/redis-cli -c -h redis-cluster-host DEL "the-key"
(interger) 1
但是,如果我想批量执行,那么它会给出输出 0,这意味着未删除:
➜ kubectl exec -it jump-machine -- /usr/local/bin/redis-cli -c -h redis-cluster-host --scan --pattern "*the-key-pattern*" | xargs -L 1 kubectl exec -it jump-machine -- /usr/local/bin/redis-cli -c -h redis-cluster-host -c DEL
Unable to use a TTY - input is not a terminal or the right kind of file
0
Unable to use a TTY - input is not a terminal or the right kind of file
0
Unable to use a TTY - input is not a terminal or the right kind of file
0
Unable to use a TTY - input is not a terminal or the right kind of file
0
Unable to use a TTY - input is not a terminal or the right kind of file
0
Unable to use a TTY - input is not a terminal or the right kind of file
0
Unable to use a TTY - input is not a terminal or the right kind of file
0
我对使用 很陌生xargs
,我不知道哪里出了问题。
我尝试使用以下命令对其进行调试,它可以毫无问题地提供所有键:
➜ kubectl exec -it jump-machine -- /usr/local/bin/redis-cli -c -h redis-cluster-host --scan --pattern "*the-key-pattern*" | xargs -L 1 echo
the-key-pattern-1
the-key-pattern-2
the-key-pattern-3
...
希望有人能解释一下,在此先感谢!
我认为您应该删除
kubectl
之后的部分xargs
,如下所示:注意
xargs -L 1
为xargs -i
,因为xargs -L 1
是在mac osx上运行,现在单引号使xargs
在linux上运行,所以-L
无法识别{}
很关键,否则你会得到(error) CROSSSLOT Keys in request don't hash to the same slot