*提示
目前一般比较少用复制+哨兵模式,一般都是直接上集群
一、是什么
二、能干嘛
三、集群算法-分片-槽位slot【高频考点】
1、官网出处
2、redis集群的槽位slot
3、redis集群的分片
4、他两的优势
5、slot槽位映射,一般业界有3中解决方案
5.1 哈希取余分区
5.2 一致性哈希算法分区
5.2.1 是什么
5.2.2 能干嘛
5.2.3 3大步骤【重点!!!】
(1)算法构建一致性哈希环
(2)redis服务器IP节点映射
(3)key落到服务器的落键规则
5.2.4 优点
5.2.5 缺点
5.2.6 小总结
5.3 哈希槽分区
5.3.1 是什么
5.3.2 哈希槽计算
6、经典面试题:为什么redis群的最大槽数是16384个?【绝对高频】
6.1 为什么是16384个
6.2 说明1
6.3 说明2
6.4 计算结论
7、redis集群不保证强一致性,这意味着在特定的条件下,redis集群可能会丢掉一些被系统收到的写入请求命令
四、集群环境案例步骤
redis集群(3主3从配置案例)-设计图
redis集群初始(3主3从配置案例-实际分配情况)-设计图
1、3主3从redis集群配置
1.1 找3台真实虚拟机,各自新建
1.2 新建6个独立的redis实例服务
(1)配置文件的配置
(2)启动6台redis主机实例
1.3 通过redis-cli命令为6台机器构建集群关系
1.4 链接进入6381作为切入点,查看并检验集群状态
至此,已完成以下红框部分的集群构建!!!
2、3主3从redis集群读写
2.1 对6381新增两个key,发生报错
2.2 为什么报错
2.3 如何解决
2.4 查看集群信息
2.5 查看某个key该属于对应的槽位值:CLUSTER KEYSLOT 键名称
3、主从容错切换迁移案例
redis集群主从切换(6381宕机,6384号上位)-设计图
3.1 容错切换迁移
(1)主机6381和从机切换,先停止主机6381
(2)查看集群信息,本次6381主6384从【未停止6381前查看】
(3)停止主机6381,再次查看集群信息
(4)加入,6381原来的主机回来了,是否会上位?
3.2 集群不暴增数据一致性100%OK,一定会有数据丢失情况
3.3 手动故障转移 or 节点从属调整改如何处理
4、主从扩容案例
3主3从redis集群扩容-4主4从(新增主机6387无槽号)-设计图
(1)新建6387、6388两个服务实例配置文件+新建后启动
(2)启动87/88两个新的节点实例,此时他们自己都是master
(3)将新增的6387节点(空槽号)作为master节点加入原集群
(4)检查集群情况第1次
redis集群扩容重新分派槽号(reshard)-设计图
(5)重新分配槽号(reshard)
(6)检查集群情况第2次
(7)为主节点6387分配从节点6388
(8)检查集群情况第3次
5、主从缩容案例
以上4步已实现的设计图:4主4从,6388挂载在6387下成为新从节点
redis集群缩容,删除6387和6388,恢复3主3从-设计图
(1)目的:6387和6388下线
(2)检查集群情况第1次,先获得从节点6388的节点ID
(3)从集群中将4号从节点6388删除
(4)将6387的槽号清空,重新分配,本例将清出来的槽号都给6381
(5)检查集群情况第2次
(6)将6387主节点删除
(7)检查集群情况第3次,6387/6388被彻底祛除
五、集群常用操作命令和CRC16算法分析
1、常用命令