Redis集群创建

标签 redis

<分区>

是否可以创建一个具有 2 个节点的 redis 集群,一个作为主节点,另一个作为从节点。

如果我尝试使用 2 个节点(一个作为主节点,另一个作为从节点),我会收到以下错误

>>> Creating cluster
Connecting to node 127.0.0.1:6379: OK
Connecting to node 192.168.40.159:6379: OK
*** ERROR: Invalid configuration for cluster creation.
*** Redis Cluster requires at least 3 master nodes.
*** This is not possible with 2 nodes and 1 replicas per node.
*** At least 6 nodes are required.

最佳答案

是的。至少 3 个主节点的要求由 ruby​​ 脚本设置,但不是集群中的硬限制。

您需要做的第一件事是发送一个带有 16385 个参数的 cluster 命令

cluster addslots 0 1 2 3 ... 16384

到集群。由于在 redis-cli 中手动输入的参数太多,我建议编写一个程序来执行此操作,在其中打开一个连接到 redis 节点的 TCP 套接字,将先前的命令转换为 redis 命令字符串并写入到 socket 。

单节点集群将在您发送命令几秒后在线。然后用redis-cli连接到另外一个节点,输入如下命令让它成为slave

cluster meet MASTER_HOST MASTER_PORT
cluster replicate MASTER_ID

其中 MASTER_HOST:MASTER_PORT 是前一个节点的地址,MASTER_ID 是该节点的 ID,您可以通过 cluster nodes 检索它 命令。

为了方便我写了一个python工具来管理这些redis集群,你可以安装

pip install redis-trib

有关更多详细信息,请转到 https://github.com/HunanTV/redis-trib.py/

关于Redis集群创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21952813/

相关文章:

来自 xampp 的 Phpinfo() 不显示 php-redis 扩展 (UBUNTU 20.04)

redis - 从 Redis 的多个集合中删除成员

ruby-on-rails - 带 Rails 的 Redis

python - os x 10.8.5 上的 Celery WorkerLostError

python - 使 python 库可用于 rqworker

node.js - 错误 : Redis connection to localhost:6379 failed - getaddrinfo EMFILE localhost:6379

python - 如何使用 python async 同时运行阻塞操作循环?

python - celery 取消自己

redis - 脚本 flushall - 怎么样?

redis - 查找特定键何时写入redis