Redis Cluster:
1.集权解决的问题(并发量、数据量)
2.HASH数据分布方式
2.1、节点取余(客户端分片:哈希-取余;节点伸缩:数据节点关系变化,导致数据迁移;迁移数量和添加的节点数量有关:建议翻倍扩容)
2.2、一致性哈希(客户端分片:哈希-顺时针[优化取余];节点伸缩:只影响临近节点,但是还是有数据迁移;翻倍伸缩:保证最小迁移数据和负载均衡)
2.3、虚拟槽分区(预设虚拟槽:每个槽映射一个数据子集,一般比节点数据大;良好的哈希函数:例如CRC16;服务端管理节点、槽、数据:例如Redis Cluster)
3.Redis Cluster特性(复制、高可用、分片:多个节点进行读写)
4.Redis Cluster架构(节点:各个redis节点、meet:节点之间通讯判断、指派槽:根据hash计算得到一定值对应一定的槽、复制)
5.Redis Cluster安装
5.1、原生安装:
5.1.1 单节点配置安装
5.1.2 meet操作
5.1.3 分配槽
5.1.4 主从配置
5.2、Ruby环境安装
5.2.1 下载、编译、安装Ruby
5.2.2 安装rubygem redis
5.2.3 安装redis-trib.rb
5.3、安装方式对比
1 原声命令安装(理解redis cluster、生产环境不适用[步骤繁杂,容易出错])
2 官方工具安装(高校、准确)
3 其它(可视化部署········)
6.集群伸缩原理(槽和数据在节点之间的移动)
7.集群扩容
准备新节点-->加入集群-->迁移槽和数据
7.1、新节点(集群模式、配置和其它节点统一、启动后是孤立节点)
7.2、加入集群(cluster meet 127.0.0.1 7000)、进入节点客户端查看(cluster nodes)、作用(为它迁移槽和数据实现扩容、作为从节点负责故障转移)
7.3、迁移槽和数据
7.3.1 迁移槽计划(平均槽数量)
7.3.2 迁移数据
A. 对目标节点发送[cluster setslot {slot} importing {sourceNodeId}]命令,让目标节点准备导入槽的数据
B.对源节点发送[cluster setslot {slot} migrating {targetNodeId}]命令,让源节点准备迁出槽的数据
C.源节点循环执行cluster getkeysinslot {slot} (count)命令,每次获取count个属于槽的键
D.在源节点上执行migrate {gargetIp} {targetPort} key 0 {timeout} 命令把指定key迁移
E.重复执行步骤C-D直到槽下所有的键数据迁移到目标节点
F.向集群内所有主节点发送cluster setslot {slot} node {targetNodeId}命令,通知槽分配给目标节点
7.3.3 添加从节点
***********未学篇章*************
第10章 深入Redis Cluster
第11章 缓存设计与优化
第12章 Redis云平台CacheCloud
第14章 增补:Redis布隆过滤器
第15章 Redis开发规范
第16章 内存管理
第17章 开发运维常见坑