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

Is there a way to flushall on a cluster so all keys from master and slaves are deleted from the db

从文档来看,这似乎是 flushall 的工作方式,但实际上并不是这样工作的。当我使用命令 flushall 时,它只会刷新 cli 分配给的数据库实例中的键。

Redis flushall documentation

Delete all the keys of all the existing databases, not just the currently selected one. This command never fails.

The time-complexity for this operation is O(N), N being the number of keys in all existing databases.

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

但是,其他键仍然存在。

有没有办法 flushall 意味着删除所有主从之间的所有密钥?

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

应该这样做:

$ redis-cli --cluster --cluster-only-masters call <one-of-the-nodes-address>:<its-port> FLUSHALL