我有一个三节点的 redis 集群。
如果我cluster nodes
通过 连接到其中一个节点后运行redis-cli
,我会得到以下输出:
10.0.32.70:6379> cluster nodes
fedd7d9220ca59045782050e9c418103fdeee3bf 10.0.33.13:6379@1122 slave 56ada5e1cc30ba1889950df4c4203b856wc83558 0 1595241803685 2 connected
9eac3667c13055555555a52b20628da372dadc21 10.0.32.161:6379@1122 slave 81777bc32d3ff82da733e4b8f36a14e8de25e057 0 1595241801000 1 connected
861e7ed26924bcccccccaa23b1977982397000e7 10.0.33.231:6379@1122 slave 10397e832212231dc40ec687798f245a39007506 0 1595241802678 3 connected
10397e832212231dc40ec687798f245a39007506 10.0.32.117:6379@1122 master - 0 1595241801671 3 connected 10923-16383
81777bc32d3ff82da733e4b8f36a14e8de25e057 10.0.33.11:6379@1122 master - 0 1595241802000 1 connected 5462-10922
56ada5e1cc30ba1889950df4c4203b856wc83558 10.0.32.70:6379@1122 myself,master - 0 1595241801000 2 connected 0-5461
现在我想从当前节点切换到不同的节点。
当我使用时select
,出现以下错误:
> select 1
(error) ERR SELECT is not allowed in cluster mode
get 1
我可以使用、 ... 等来触发开关get 2
(基本上是带有随机整数的 get 命令)。经过几次尝试和错误,我就能找到正确的节点。
有更容易的方法吗?
答案1
你可以尝试<节点的 id>. 就你的情况而言。
get 10397e832212231dc40ec687798f245a39007506
get 81777bc32d3ff82da733e4b8f36a14e8de25e057
get 56ada5e1cc30ba1889950df4c4203b856wc83558
您只能使用 get 连接到主节点。如果您尝试使用 get 连接到从属节点。它将仅连接到主节点。
答案2
在 redis-cli 内部,您还可以执行以下任一操作:
connect 10.0.33.11 6379
或者在我的测试集群上
connect localhost 30002
答案3
一个可能有用的技巧:在我的测试集群上(通过 create-cluster 命令,3 节点,默认映射),通过反复试验,我找到了 3 个可以更快地输入以切换节点的快捷键:
get 3 (node 1)
get 1 (node 2)
get 4 (node 3)
(3.14,与 PI 类似)
您必须首先运行在设置/获取密钥时自动切换节点的选项redis-cli
。-c
如果您的集群映射不同,您可以开始使用 get 来查找适用于您的集群的简短但容易记住的映射。显然,集群映射将来可能会发生变化,因此您不会想在任何永久脚本/代码中使用它。