Redis分布式方案(数据的分片)
Redis Cluster
Redis Cluster是在Redis 3.0的版本正式推出的,用来解决分布式的需求,同时也可以实现高可用。它是去中心化的,客户端可以连接到任意一个可用节点。Redis Cluster可以看成是由多个Redis实例组成的数据集合。客户端不需要关注数据的子集到底存储在哪个节点,只需要关注这个集合整体。
以3主3从为例,节点之间两两交互,共享数据分片、节点状态等信息。
Cluster解决分片的问题,数据怎么分布?
Redis既没有用哈希取模,也没有用一致性哈希,而是用虚拟槽来实现的。
Redis创建了16384个槽(slot),每个节点负责一定区间的slot。比如Node1负责0-5460,Node2负责5461-10922,Node3负责10923-16383。
对象分布到Redis节点上时,对key用CRC16算法计算再%16384,