Redis集群:
3.0版本后出现集群·
由多个Redis服务器组成的分布式网络服务集群
每一个redis服务器称为节点node,node之间会互相通信,两两相连
Redis集群无中心节点
Redis集群节点复制:
1.Redis集群的每个节点都有两种角色可选:主节点master node,从节点slave node
其中主节点用于存储数据,从节点则是某个主节点的复制品
2.当用户需要处理多请求的时候,添加从节点可以扩展系统的读性能,因为redis集群
重用了单机redis复制特性的代码,所以集群的复制行为和单机复制特性行为是完全一样的
Redis集群故障转移:
1.Redis集群的主节点内置了类似Redis sentinel 的节点故障检测和自动故障转移功能,
当集群中某个主节点下线时,集群中的其他在线主节点会注意到,并对已下线的主节点
进行故障转移
2.集群进行故障转移的方法和redis sentinel 进行故障转移的方法基本一样,不同的是,
在集群里面,是由集群中其他在线的主节点负责进行的,所以集群不必另外使用redis sentinel
Redis集群分片:
1.集群将整个数据库分为16384个槽位solt,所有key都是数数据这些solt中的一个,key的槽位计算公式
solt number =crc16(key)384,其中CRC16为16为的循环冗余校验和函数
2.集群中的每个主节点都可以处理0个至16383个槽,当16384个槽都有某个节点在负责处理时,集群进入
上限状态,并开始处理客户端发送的数据命令请求
Redis集群Redirect转向:
1.由于redis集群无中心节点,请求会发给任意主节点
2.主节点只会处理自己负责的槽位的命令请求,其他槽位的命令请求,该主节点会返回客户端一个转向错误
3.客户端根据错误中包含的地址和端口重新向正确的负责的主节点发起命令请求
Redis集群搭建:
1.创建多个主节点
2.为每一个节点指派solt,将多个节点连接起来,组成一个集群
3.槽位分片完成后,集群进入上线状态
4.6个节点:3个主节点,每一个节点哟偶偶一个从节点
集群示例:
1.现在官网下载redis最新版本 现在已经是4.x了 官网:redis.io
2.在跟目录下 创建 /myredis 文件夹
3将下载的redis 移动到 /myredis中 ,并进行解压
4.进入解压后的redis 目录 进行make 编译
5.退到上级目录 创建 mkdir redis 文件夹
6.进行编译安装在指定目录下
7.然后进入 redis文件夹 创建一个目录 cluster
8.进入cluster 后 创建6个文件夹 分别是 7000 7001 7002 7003 7004 7005 模拟集群
9.进入7001目录 创建redis.conf
10.在redis.conf 写如下配置
11.剩下的5个700x的文件夹分别执行对应的9-10步骤
12.然后在vim ~/.bash_profile配置环境变量
13.然后进行source ~/.bash_profile
14.启动redis 服务 7000
15. 分别另外开启5个终端 分别开启 7001 7002 7003 7004 7005 redis 服务
16.在创建一个新的终端查看端口 700x是客户端连接的接口,1700x是内部沟通的端口
17.创建集群,脚本槽位分配通过redis-trib这个ruby脚本来分配,3个主实例,3个从实例
首先yum install ruby rubygems -y ,在gem install redis
18.然后进入/myredis/redis-4.0.1/src,通过ls 查看有这个东西
19.执行这个命令(--replicas 是对应的副本 比如:7000 副本就是 7003 7001 就是7004 ....) 会有一个询问 输入 yes
20.启动7002测试
21.这时槽位已经都分配好,比如查看7003的
22.这时我们杀掉7000一个主,此时7003会尝试,最终尝试失败,7003变为主
23.此时我们退出之前的7002 ,启动7003 看看能不能写,发现7003确实变为主,能写
24.当7000再次启动发现已经是slave,不在是master
25.当我们把7000 7003 从主 全部停掉会有哦什么变化,此时查看主7002,发现原来的槽只有2/3可用,暂停掉服务
26.我们从新链接7002,发现能连接其实是假象,不能设置数据,就是没有足够的槽提供服务
27.当我们把7000 7003 重新启动后 7002就能正常工作了
以上就是Redis集群操作!!!