redis学习笔记(5)

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章 开发运维常见坑

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章