一个 command/script 用于查找并刷新 Redis 集群中的所有 master

One command/script to find and flush all masters in Redis cluster

我们可以 运行 一个 command/script 来查找并刷新 Redis 集群中的所有主节点吗? 我正在尝试一次 运行 FLUSHALL 我集群中的所有主节点。同样,每当我的一个主人失败时,那个失败的主人的奴隶就会成为主人。所以当它变为 master 时,它应该 运行 FLUSHALL 命令。 他们有没有内置函数可以做到这一点?

redis-cli 可以使用以下语法执行类似的操作:

redis-cli --cluster call 1.2.3.4:9876 flushall

其中 ip:port 是您集群的节点之一。这将 运行 所有节点上的命令。

查看https://redis.io/commands/cluster-nodes和相关命令。

CLUSTER NODES命令的输出是一个space分隔的CSV字符串,其中每一行代表集群中的一个节点。以下是输出示例:

07c3...b91 127...1:30004@31004 slave e7d1eecce10fd6bb5eb35b9f99a514335d9ba9ca 0 1426238317239 4 connected
67ed...fa1 127...1:30002@31002 master - 0 1426238316232 2 connected 5461-10922
292f...f4f 127...1:30003@31003 master - 0 1426238318243 3 connected 10923-16383
6ec2...e01 127...1:30005@31005 slave 67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1 0 1426238316232 5 connected
824f...ac3 127...1:30006@31006 slave 292f8b365bb7edb5e285caf0b7e6ddc7265d2f4f 0 1426238317741 6 connected
e7d1...9ca 127...1:30001@31001 myself,master - 0 0 1 connected 0-5460

每一行由以下字段组成:

  • id
  • ip:端口@cport
  • 旗帜
  • master/slave
  • ping 发送
  • 乒乓接收
  • 配置纪元
  • link-状态
  • 插槽插槽...插槽

因此,使用此命令,您可以在第四个字段中按类型查找所有主控(和从属)。

您需要实施监控服务来检测何时触发您的 FLUSHALL 命令。