有没有办法在集群上刷新所有密钥,以便从数据库中删除主从的所有键

Chr*_*hew 0 redis redis-cluster

从文档看来,flushall 是如何工作的,但实际上它不是那样工作的。当我使用该命令时flushall,它只刷新 cli 分配给的数据库实例中的键。

Redis 冲洗文档

删除所有现有数据库的所有键,而不仅仅是当前选择的键。这个命令永远不会失败。

此操作的时间复杂度为 O(N),N 是所有现有数据库中的键数。

例如,如果我的集群 redis-cli 已经启动并且我搜索一个键,并且节点 cli 从 7000 更改为 7002,对应于哈希所在的键,即服务器 7002,然后执行刷新所有操作,它将删除每个键服务器。

但是,其他键仍然存在。

有没有办法flushall 意思是删除所有master 和slave 的所有key?

Ita*_*ber 6

是的。您可以将 cli 的--cluster开关与call命令一起使用 - 它将在集群的每个主节点上执行提供的命令(并将复制,作为FLUSHALL写入命令,到它们各自的从节点)。

这应该这样做:

$ redis-cli --cluster call <one-of-the-nodes-address>:<its-port> FLUSHALL
Run Code Online (Sandbox Code Playgroud)

  • 我必须将“call”放在“--cluster-only-master”标志之前:“redis-cli --cluster call --cluster-only-masters &lt;one-of-the-nodes-address&gt;:&lt;its-”港口&gt; FLUSHALL` (6认同)
  • 我认为参数的顺序不是最佳的。它应该是: redis-cli --cluster-only-masters --cluster call ...否则,当前的 docker.io/redis 返回“Unknown --cluster subcommand” (2认同)