引言:
主从架构解决了:redis读写效率问题
哨兵解决了:单点故障问题,当master宕机之后,我们的哨兵会重新推选出一位新的master
现有的问题:我们的master节点可以读和写数据,而我们的从节点只能读取数据,从节点的数据都是从master节点同步过来的。一个项目大量的增删改,我们的master节点可能无法解决当前问题。
Redis的集群
Redis集群在保证主从加哨兵的基本功能之外,还能够通过集群的哈希槽提升Redis存储数据的能力。
特点:
- Redis集群是无中心的。
- Redis集群有一个ping-pang机制。
- 投票机制,Redis集群节点的数量必须是2n+1。
- Resis集群中默认分配了16384个hash槽,在存储数据时,就会将key进行crc16的算法,并且对16384取余,根据最终的结果,将key-value存放到执行Redis节点中,而且每一个Redis集群都在维护着相应的hash槽。
- 为了保证数据的安全性,每一个集群的节点,至少跟着一个从节点。
- 单独的针对Redis集群中的某一个节点搭建主从。
- 当Redis集群中,超过半数的节点宕机之后,Redis集群就瘫痪了。
哈希槽:你可以理解成表,使用单节点时的redis时只有一个表,所有的key都放在这个表里;改用Redis Cluster以后会自动为你生成16384个表,你insert数据时会根据算法来决定你的key应该存在哪个表,每个表里有很多数据
使用哈希槽的好处就在于可以方便的添加或移除节点。
当需要增加节点时,只需要把其他节点的某些哈希槽挪到新节点就可以了;
当需要移除节点时,只需要把移除节点上