文章目录
redis集群是一个提供在多个Redis节点间共享数据的程序集,支持多个master。这是由于哨兵加主从复制的方式具有缺陷,由于数据量过大的情况下,单个master的复制集难以承担,因此需要多个复制集进行集群,其作用主要是提供给在多个Redis节点间共享数据的程序集。
一、集群的功能
- Redis集群支持多个Master,每个Master由可以挂载多个Slave。因此,它也具有读写分离、支持数据高可用和支持海量数据的读写存储操作的特点。
- 无需使用哨兵功能,集群自带了sentinel的故障转移机制,内置高可用的支持。
- 客户端与集群的连接只需要与集群中的任一可用节点连接即可。
- 槽位
slot
负责分配到各个物理服务节点,由对应的集群来负责维护节点、插槽和数据之间的关系。
二、Redis集群的槽位slot和分片
2.1、概念
Redis分成了16384个哈希槽,每个哈希槽都可以存放一个key-value
键值对,即设置了16384个主节点的集群上限(但建议大小为1000),每个key
通过CRC16校验后对16384取模来决定放置在哪个槽,
使用Redis集群时将存储的数据分散到多台redis机器上,这就称为分片。
计算当前数据应该放在哪个槽位上的公式为:
H A S H _ S L O T = C R C 16 ( k e y ) m o d 16384 HASH\_SLOT=CRC16(key) mod 16384