directory search
Cluster cluster addslots(集群 槽位) cluster count failure reports(集群计数失败报告) cluster countkeysinslot cluster delslots cluster failover cluster forget cluster getkeysinslot cluster info cluster keyslot(集群键槽) cluster meet cluster nodes(集群节点) cluster replicate(集群复制) cluster reset(集群重置) cluster saveconfig cluster set config epoch cluster setslot cluster slaves cluster slots readonly readwrite Connection auth echo ping quit select swapdb Geo geoadd geodist geohash geopos georadius georadiusbymember Hashes hdel hexists hget hgetall hincrby hincrbyfloat hkeys hlen hmget hmset hscan hset hsetnx hstrlen hvals HyperLogLog pfadd pfcount pfmerge Keys del dump exists expire expireat keys migrate move object persist pexpire pexpireat pttl randomkey rename renamenx restore scan sort touch ttl type unlink wait Lists blpop brpop brpoplpush lindex linsert llen lpop lpush lpushx lrange lrem lset ltrim rpop rpoplpush rpush rpushx Pub/Sub psubscribe publish pubsub punsubscribe subscribe unsubscribe Scripting eval evalsha script debug script exists script flush script kill script load Server bgrewriteaof bgsave client getname client kill client list client pause client reply client setname command command count command getkeys command info config get config resetstat config rewrite config set dbsize debug object debug segfault flushall flushdb info lastsave monitor role save shutdown slaveof slowlog time Sets sadd scard sdiff sdiffstore sinter sinterstore sismember smembers smove spop srandmember srem sscan sunion sunionstore Sorted Sets zadd zcard zcount zincrby zinterstore zlexcount zrange zrangebylex zrangebyscore zrank zrem zremrangebylex zremrangebyrank zremrangebyscore zrevrange zrevrangebylex zrevrangebyscore zrevrank zscan zscore zunionstore Strings append bitcount bitfield bitop bitpos decr decrby get getbit getrange getset incr incrby incrbyfloat mget mset msetnx psetex set setbit setex setnx setrange strlen Transactions discard exec multi unwatch watch
characters

CLUSTER MEET ip port

自3.0.0起可用。

时间复杂度: O(1)

CLUSTER MEET 用于将启用了群集支持的不同 Redis 节点连接到工作群集。

其基本思想是,默认情况下节点不相互信任,并且被认为是未知的,因此,由于系统管理错误或网络地址修改,不同的集群节点不太可能混合成一个集群节点。

因此,为了给定节点接受另一个节点进入组成 Redis 集群的节点列表,只有两种方法:

1. 系统管理员发送 CLUSTER MEET 命令强制节点与另一个节点相遇。

2. 一个已知的节点在八卦部分发送一个我们不知道的节点列表。如果接收节点将发送节点信任为已知节点,则它将处理八卦部分,并向尚未知的节点发送握手。

请注意,Redis 群集需要形成完整的网格(每个节点与其他节点相连),但为了创建群集,不需要发送形成完整网格所需的所有 CLUSTER MEET 命令。重要的是发送足够的 CLUSTER MEET 消息,以便每个节点都可以通过一系列已知节点到达每个其他节点。由于在心跳包中交换八卦信息,缺失的链接将被创建。

因此,如果我们通过 CLUSTER MEET 将节点 A 与节点 B 连接起来,并将 B 与 C 连接起来,则 A 和 C 将找到握手方式并创建链接。

另一个例子:如果我们想象一个由以下四个节点组成的集群,称为 A,B,C 和 D,我们可以发送以下一组命令给 A:

1. CLUSTER MEET B-ip B-port

2. CLUSTER MEET C-ip C-port

3. CLUSTER MEET D-ip D-port

作为A知道并被所有其他节点知晓的副作用,它将在心跳包中发送八卦部分,这将允许每个其他节点与另一个节点创建链接,在几秒钟内形成完整的网格,甚至如果集群很大。

此外,CLUSTER MEET 不需要互惠。如果我将命令发送给 A 以加入 B,我不需要也将它发送给 B 以加入 A.

实现细节:MEET 和 PING 数据包

当给定节点收到 CLUSTER MEET 消息时,命令中指定的节点仍然不知道我们发送命令的节点。因此,为了使节点强制接收方接受它作为可信节点,它会发送一个MEET数据包而不是 PING 数据包。这两个数据包的格式完全相同,但前者强制接收方将节点确认为可信。

返回值

简单的字符串回复:OK如果命令成功。如果指定的地址或端口无效,则返回错误。

Previous article: Next article: