Redis-Cluster 集群:
redis 的哨兵模式基本已经可以实现高可用,读写分离,但是在这种模式下每台 redis
服务器都存储相同的数据,很浪费内存,所以在 redis3.0 上加入了 cluster 模式,实现的
redis 的分布式存储,也就是说每台 redis 节点上存储不同的内容。Redis-Cluster 采用无
中心结构,它的特点如下:
所有的 redis 节点彼此互联(PING-PONG 机制),内部使用二进制协议优化传输速度和带
宽。节点的 fail 是通过集群中超过半数的节点检测失效时才生效。客户端与 redis 节点直
连,不需要中间代理层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。
工作方式
在 redis 的每一个节点上,都有这么两个东西,一个是插槽(slot),它的取值范围是:
0-16383。还有一个就是 cluster,可以理解为是一个集群管理的插件。当我们的存取的 key
到达的时候,redis 会根据 crc16 的算法得出一个结果,然后把结果对 16384 求余数,
这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,通过这个值,去找到对应的
插槽所对应的节点,然后直接自动跳转到这个对应的节点上进行存取操作。为了保证高可用,
redis-cluster 集群引入了主从模式,一个主节点对应一个或者多个从节点,当主节点宕机
的时候,就会启用从节点。当其它主节点 ping 一个主节点 A 时,如果半数以上的主节点
与 A 通信超时,那么认为主节点 A 宕机了。如果主节点 A 和它的从节点 A1 都宕机了,
那么该集群就无法再提供服务了。