Update Redis_集群模式.md

This commit is contained in:
heibaiying 2019-12-30 16:43:57 +08:00 committed by GitHub
parent 9ba2b98e36
commit 60a671908f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -43,7 +43,7 @@ HASH_SLOT = CRC16(key) mod 16384
#### 1. 请求重定向 #### 1. 请求重定向
在集群模式下Redis接收到命令时会先计算键对应的槽然后根据槽找出对应的目标节点如果目标节点就是此时所在的节点则直接进行处理否则返回 MOVED 重定向消息给客户端,通知客户端去正确的节点上执行操作。 在集群模式下Redis 接收到命令时会先计算键对应的槽,然后根据槽找出对应的目标节点,如果目标节点就是此时所在的节点,则直接进行处理,否则返回 MOVED 重定向消息给客户端,通知客户端去正确的节点上执行操作。
#### 2. Smart 客户端 #### 2. Smart 客户端
@ -172,7 +172,8 @@ redis-cli -h 127.0.0.1 -p 6479 cluster nodes
``` ```
<div align="center"> <img src="../pictures/redis-cluster-nodes.png"/> </div> <div align="center"> <img src="../pictures/redis-cluster-nodes.png"/> </div>
想要让新加入的节点能够进行读写操作,可以使用 `reshard` 命令为其分配槽,这里我们将其他三个主节点上的槽迁移一部分到 6485 节点上,这里一共迁移 4096 个槽,即 16384 除以 4 。 `cluster-from ` 用于指明槽的源节点,可以为多个,`cluster-to` 为槽的目标节点,`cluster-slots` 为需要迁移的槽的总数:
想要让新加入的节点能够进行读写操作,可以使用 `reshard` 命令为其分配槽,这里我们将其他三个主节点上的槽迁移一部分到 6485 节点上,这里一共迁移 4096 个槽,即 16384 除以 4 。 `cluster-from` 用于指明槽的源节点,可以为多个,`cluster-to` 为槽的目标节点,`cluster-slots` 为需要迁移的槽的总数:
```shell ```shell
redis-cli --cluster reshard 127.0.0.1:6479 \ redis-cli --cluster reshard 127.0.0.1:6479 \
@ -184,6 +185,7 @@ redis-cli --cluster reshard 127.0.0.1:6479 \
迁移后,再次使用 `cluster nodes` 命令可以查看到此时 6485 上已经有其他三个主节点上迁移过来的槽: 迁移后,再次使用 `cluster nodes` 命令可以查看到此时 6485 上已经有其他三个主节点上迁移过来的槽:
<div align="center"> <img src="../pictures/redis-cluster-nodes2.png"/> </div> <div align="center"> <img src="../pictures/redis-cluster-nodes2.png"/> </div>
为保证高可用,可以为新加入的主节点添加从节点,命令如下。`add-node` 接收两个参数,第一个为需要添加的从节点,第二个参数为集群内任意节点,用于发现集群。`cluster-master-id` 参数用于指明作为哪个主节点的从节点,如果不加这个参数,则自动分配给从节点较少的主节点: 为保证高可用,可以为新加入的主节点添加从节点,命令如下。`add-node` 接收两个参数,第一个为需要添加的从节点,第二个参数为集群内任意节点,用于发现集群。`cluster-master-id` 参数用于指明作为哪个主节点的从节点,如果不加这个参数,则自动分配给从节点较少的主节点:
```shell ```shell
@ -199,7 +201,7 @@ redis-cli --cluster add-node 127.0.0.1:6486 127.0.0.1:6479 --cluster-slave \
redis-cli --cluster del-node 127.0.0.1:6479 `<node-id>` redis-cli --cluster del-node 127.0.0.1:6479 `<node-id>`
``` ```
需要注意的是待删除的主节点上必须为空,如果不为空则需要将它上面的槽和数据迁移到其他节点上,和扩容时一样,可以使用`reshard`命令来完成数据迁移。 需要注意的是待删除的主节点上必须为空,如果不为空则需要将它上面的槽和数据迁移到其他节点上,和扩容时一样,可以使用 `reshard` 命令来完成数据迁移。