【大家好,我是爱干饭的猿,本文重点介绍Redis7 集群概述、作用、集群算法-分片-槽位slot、集群环境案例步骤、集群常用操作命令和CRC16算法。
后续会继续分享Redis7和其他重要知识点总结,如果喜欢这篇文章,点个赞👍,关注一下吧】
上一篇文章:《【Redis7】 Redis7 哨兵(重点:哨兵运行流程和选举原理)》
目录
3.6 Redis集群不保证强一致性,这意味着在特定的条件下,Redis集群可能会丢掉—些被系统收到的写入请求命令
集群:
🍔1. 概述
- 由于数据量过大,单个Master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分,这就是Redis的集群,其作用是提供在多个Redis节点间共享数据的程序集。
- Redis集群是一个提供在多个Redis节点间共享数据的程序集
- Redis集群可以支持多个Master
🍔2. 作用
- Redis集群支持多个Master,每个Master又可以挂载多个Slave
- 读写分离
- 支持海量数据的高可用
- 支持海量数据的读写存储操作
- 由于Cluster自带Sentinel的故障转移机制,内置了高可用的支持,无需再去使用哨兵功能
- 客户端和Redis的节点连接,不再需要连接集群中所有节点,只需连接集群中的任意一个可用节点即可
- 槽位slot负责分配到各个物理服务节点,由对应的集群来负责维护节点、插槽和数据之间的关系
🍔3. 集群算法-分片-槽位slot
集群的密钥空间被分成16384个槽,有效地设置了16384个主节点的集群大小上限(但是,建议的最大节点大小约为1000个节点)。
集群中的每个主节点处理16384个哈希槽的一个子集。当没有集群重新配置正在进行时(即哈希槽从一个节点移动到另一个节点),集群是稳定的。当集群稳定时,单个哈希槽将由单个节点提供服务(但是,服务节点可以有一个或多个副本,在网络分裂或故障的情况下替换它,并且可以用于扩展读取陈旧数据是可接受的操作)。
3.1 redis集群的槽位slot
3.2 redis集群的分片
3.3 这样做的优势
3.4 slot槽位映射的3种解决方案
1. 哈希取余分区
2. 一致性哈希算法分区
一致性哈希算法在1997年由麻省理工学院中提出的,设计目标是为了解决分布式缓存数据变动和映射问题,某个机器宕机了,分母数量改变了,自然取余数不OK了。
步骤1:算法构建一致性哈希环
步骤2:服务器IP节点映射
步骤3:key 落到服务器的落键规则
优点:
1. 一致性哈希算法的容错性
2. 一致性哈希算法的扩展性
缺点:一致性哈希算法的数据倾斜问题
小节:
为了在节点数目发生改变时尽可能少的迁移数据,将所有的存储节点排列在收尾相接的Hash环上,每个key在计算Hash后会顺时针找到临近的存储节点存放。 而当有节点加入或退出时仅影响该节点在Hash环上顺时针相邻的后续节点。
优点:加入和删除节点只影响哈希环中顺时针方向的相邻的节点,对其他节点无影响。
缺点 :数据的分布和节点的位置有关,因为这些节点不是均匀的分布在哈希环上的,所以数据在进行存储时达不到均匀分布的效果。

本文介绍了Redis7的集群特性,包括集群的作用、分片和槽位slot的概念,详细讲解了槽位映射的哈希取余、一致性哈希和哈希槽三种方案。此外,还讨论了Redis集群的最大槽数限制原因以及不保证强一致性的特点。文中还提供了集群配置、读写操作、主从切换和扩容缩容的案例步骤,并提到了CRC16算法在槽位分配中的应用。
最低0.47元/天 解锁文章
7263





