redis cluster(redis集群)是redis3.0之后的版本才支持的架构,和其他集群一样,redis集群也是为了解决单台服务器不够用的情况。redis cluster是一个分布式的集群方案,它支持横向扩展。redis的集群方案不单止官方的redis cluster,还有第三方的Codis集群方案。Codis类似于LVS做负载均衡一样,它用的是路由的技术。而官方的redis cluster则是把所有的节点都互联,实现数据共享。
redis cluster集群的特点:
多个redis节点网络互联,数据共享
所有的节点都是一主一从(可以是多个从),其中从不提供服务,仅作为备用
不支持同时处理多个键(如mset/mget),因为redis需要把键均匀分布在各个节点上,并发量很高的情况下同时创建键值会降低性能并导致不可预测的行为。
支持在线增加、删除节点
客户端可以连任何一个主节点进行读写

场景:
由于资源有限,所以只使用两台机器做这个实验,两台机器上分别开启三个Redis服务(不同的端口)
A机器的IP:192.168.77.130
B机器的IP:192.168.77.128
A机器上三个端口7000,7002,7004,全部为主
B机器上三个端口7001,7003,7005,全部为从
redis版本:4.0.1
两台机器的防火墙都是关闭的
两台机器上都要编译安装redis,然后编辑并复制3个不同的redis.conf,分别设置不同的端口号、dir等参数,还需要增加cluster相关参数,然后分别启动6个redis服务
配置文件的内容可以在以下网址获得:
<a href="https://coding.net/u/aminglinux/p/yuanke_centos7/git/tree/master/21NOSQL">https://coding.net/u/aminglinux/p/yuanke_centos7/git/tree/master/21NOSQL</a>
1.A机器上编辑配置文件:
2.B机器上编辑配置文件:
3.启动A机器上的redis服务,并检查进程和端口:
4.启动B机器上的redis服务,并检查进程和端口:
5.在A机器上安装ruby2.2:
安装好依赖:
下载源码包,并把源码包打包成rpm包进行安装:
6.拷贝可执行文件(命令):
7.创建replicas:
打印了两个OK表示集群成功。
以集群的方式登录redis,并创建一个key:
如果不加-c的话,只会登录目标机器,操作的也只是目标机器,而不会像集群那样重定向数据。任意一个节点都可以创建key,或者查看key。
检测集群状态:
cluster nodes命令可以列出节点:
cluster info命令可以查看集群信息:
cluster meet ip port 命令可以添加节点,例如我现在在B机器上新增加了一个redis服务,端口为7006,现在我要把这个新增的redis服务加入到集群节点中来:
可以看到7006成功添加到了节点中,身份是master。
使用以上方式添加的节点,都会是master身份,而 cluster replicate node_id 命令可以将当前节点设置为指定节点的从(slave):
可以看到成功把7006指定为 ef2f571de1d8d1bfa5d96acab297ad857c09d33c 这个节点的slave,这个节点对应的端口是7001。
cluster forget node_id 命令可以移除某个节点,例如我把7006移除掉:
要注意的是,这个命令不能移除master身份的节点,而且当前登录的节点(myself)也不能移除,只能移除非当前登录的slave节点。如果想要移除master节点,只能先把这个master指定为slave之后再移除。
cluster saveconfig命令可以把当前集群的操作保存到配置文件里: