gpt4 book ai didi

redis - 无法向 Redis 集群添加值 - 集群已关闭

转载 作者:IT王子 更新时间:2023-10-29 06:00:27 24 4
gpt4 key购买 nike

我有 4 个节点,3 个是主节点,1 个是从节点。我试图通过 set foo bar 添加一个简单的字符串,但每当我这样做时,我都会收到此错误:

(error) CLUSTERDOWN The cluster is down

下面是我的集群信息

127.0.0.1:7000cluster info

cluster_state:fail

cluster_slots_assigned:11

cluster_slots_ok:11

cluster_slots_pfail:0

cluster_slots_fail:0

cluster_known_nodes:4

cluster_size:3

cluster_current_epoch:3

cluster_my_epoch:3

cluster_stats_messages_sent:9262

cluster_stats_messages_received:9160

我正在使用 Redis-x64-3.0.503。请告诉我如何解决这个问题

集群节点:

87982f22cf8fb12c1247a74a2c26cdd1b84a3b88 192.168.2.32:7000 slave bc1c56ef4598fb4ef9d26c804c5fabd462415f71 1492000375488 1492000374508 3 connected

9527ba919a8dcfaeb33d25ef805e0f679276dc8d 192.168.2.35:7000 master - 1492000375488 1492000374508 2 connected 16380

ff999fd6cbe0e843d1a49f7bbac1cb759c3a2d47 192.168.2.33:7000 master - 1492000375488 1492000374508 0 connected 16381

bc1c56ef4598fb4ef9d26c804c5fabd462415f71 127.0.0.1:7000 myself,master - 0 0 3 connected 1-8 16383

最佳答案

只是加起来并简化@neuront 所说的内容。

Redis 将数据存储在哈希槽中。要理解这一点,您需要了解 Hasmaps 或 Hashtables 的工作原理。在这里供我们引用,redis 有一个常量 16384 个插槽,用于分配和分配给所有主服务器。

现在,如果我们查看您发布的节点配置并使用 redis documentation 引用它,您会看到结束数字表示分配给母版的插槽。

你的情况是这样的

... slave  ... connected
... master ... connected 16380
... master ... connected 16381
... master ... connected 1-8 16380

所以所有的机器都连接起来形成集群,但并不是所有的哈希槽都被分配来存储信息。应该是这样的

... slave  ... connected
... master ... connected 1-5461
... master ... connected 5462-10922
... master ... connected 10923-16384

你看,现在我们正在分配所有哈希槽的范围,就像文档中说的那样

slot: A hash slot number or range. Starting from argument number 9, but there may be up to 16384 entries in total (limit never reached). This is the list of hash slots served by this node. If the entry is just a number, is parsed as such. If it is a range, it is in the form start-end, and means that the node is responsible for all the hash slots from start to end including the start and end values.

特别是在您的情况下,当您使用键 foo 存储一些数据时,它一定已分配给其他未在集群中注册的插槽。

由于您使用的是 Windows,因此您必须手动设置分发。为此你必须做这样的事情(这是在 Linux 中,转换为 windows 命令)

for slot in {0..5400}; do redis-cli -h master1 -p 6379 CLUSTER ADDSLOTS $slot; done;

取自此article

希望对您有所帮助。

关于redis - 无法向 Redis 集群添加值 - 集群已关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43225499/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com