标签:alt sage mes des ret 请求 端口 完成 key
本文摘录自 Redis设计与实现
如果客户端要连接redis集群而不是单机,则应该是./redis-cli -c 注意一定要有-c
假设现在有两台Redis,都以cluster的方式进行启动。可以通过向A发送,CLUSTER MEET B.IP B.PORT的方式,让这两个节点组成一个集群
收到命令的节点A将与节点B进行握手(handshake),以此来确认彼此的存在,并为将来的进一步通信打好基础:
之后,节点A会将节点B的信息通过Gossip协议传播给集群中的其他节点,让其他节点也 与节点B进行握手,最终,经过一段时间之后,节点B会被集群中的所有节点认识
def slot_number(key):
return CRC16(key) & 16383;
然后判断槽是否应当与当前节点处理
收到请求的节点会检查ClusterState.Slots数组中的项i,判断键所在的槽是否应该由自己负责
1 如果clusterState.slots[i] 指针指向的是自己,那么节点应该执行客户端的命令
2 如果clusterState.slots[i] 不是自己,那么就根据指针所指向的节点的ip和端口号,像客户端返回MOVED错误
可以使用CLUSTER REPLICATE node_id的方式配置一个节点为集群中主节点的从节点,注意node_id是run_id
这就说明使用了cluster真的就不需要哨兵了,因为redis cluster的各个节点会定期的彼此发送PING消息
标签:alt sage mes des ret 请求 端口 完成 key
原文地址:https://www.cnblogs.com/juniorMa/p/14314303.html