Redis-集群
Redis集群
集群:由于数据量过大,单个master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分,这就是redis的集群,其作用是提供在多个redis节点间共享数据的程序集
考集群的算法和架构拓扑安装
==Redis集群是一个提供在多个Redis节点间共享数据的程序集==
==Redis集群可以支持多个Master==
干什么
redis集群支持多个Master,每个Master又可以挂载多个slave
- 读写分离
- 支持数据的高可用
- 支持海量数据的读写存储操作
由于cluster自带的故障转移机制,内置了高可用的支持,无需再去使用哨兵的功能
客户端与redis的节点连接,不再需要连接集群中的所有节点,只需要任意连接集群中的一个可用节点即可
槽位slot负责分配到各个物理服务节点,又对应的集群来负责维护节点,插槽和数据之间的关系.
集群算法 分片 槽位slot
槽位slot
集群的密钥空间被分为16384个槽位,有效设置了16384个主节点的集群大小上限(但是建议,最大的节点大小约为1000个节点)
redis有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定防止在哪个槽,集群的每个节点负责一部分hash槽.
分片
1. 定义:使用redis集群时我们会将存储的数据分散到多台redis机器中,这称为分片.
集群中的每个redis实例都被认为是整个数据的一个分片
2.如何找到给定key的一个分片
为了找到给定key的分片,我们对key进行CRC16(KEY)算法处理并通过对总分片数量取模.然后,使用确定性哈希函数,这意味着给定的key将多次始终映射到同一个分片,我们可以推断将来读取特定key的位置
优势
slot槽位映射,一般业界有三种解决方案
redis集群分片之hash取余分区算法
一致性哈希
分布式缓存数据变更与映射问题,某个机器宕机了,分母的数量就改变了,自然取余就不可以了
能干啥
- 提出了一致性hash解决方案
- 目的是当服务器个数发生变动时,尽量减少影响客户端到服务器的映射关系
步骤
算法构建一致性哈希环
服务器IP节点映射
key落到服务器的落键规则
优点
哈希槽分区
一定要-c 这个指令是值用集群的形式来运行 ,