Redis5的集群搭建
说道Redis,自然少不了集群。真实生产环境,一般使用都是集群,以应对巨大的缓存数据量。Java分布式技术体系中,使用集群的框架非常之多,但是往往在集群中的节点之间是互相同步数据的,也就是无论应用调用到哪个节点,产生的效果都是一样的。尤其是在我了解服务注册类框架的时候,节点之间的一致性更是硬性要求。 Redis集群给我印象较深的就是节点之间的数据是完全不需要同步的。首先来讲,集群没有Leader,之间的关系互相平等。那Redis集群是怎么存储数据的呢? 我们都知道Redis的数据格式都是key-value,类似于Java中的HashMap。不错,和HashMap的结构类似,Redis集群同样是用key生成出的Hash值来决定保存key-value这对键值的位置。 Redis集群的结构中共有哈希槽16384个,例如集群有三个节点,那这三个节点分配到的哈希槽分别为: node1: 0-5500, node2:5501-11000, node3:11001-16383。 也就是说当保存一对键值的时候,会根据key生成出来的值分配到这三个当中的一个。那么不免会有疑问当键值被保存到node2的情况下,但是我的应用只连接到node1,这个时候怎么处理呢? 应用使用key来获取value的时候,同样使用key来得到键值保存的位置,发现在node2节点后,会跳转到node2,