reids在3.0之后开始支持集群(cluster)模式,该模式目前支持节点的自动发现、选举和容错、在线分片等特性。如果说主从复制是一个骑士带着一个或多个跟班且跟班不能顶替骑士,哨兵机制就是骑士手下的跟班能够顶替骑士,但是这两种方式最终都只是骑士单打独斗,而集群就是把骑士集中起来组成骑士军团,毕竟团队的力量是无穷的。
redis集群有以下特点:
1.所有的redis节点都通过ping-pong机制互联,内部使用二进制优化传输速度和带宽。
2.节点的fail是通过集群中半数以上的节点检测失效时才生效。
3.客户端与redis节点直连,不需要中间proxy层,客户端只要连接其中一个节点即可。
4.把所有的物理节点映射在槽(slot)上,对node-slot-value进行维护。
上面说的节点都是主节点(主服务器),下面是原理图:
在win环境下的搭建:
在配置文件中进行了如下修改:
port 7000——端口号
cluster-enabled yes——开启集群
cluster-config-file nodes-7000.conf——节点配置文件名
cluster-node-timeout 5000——超时时间
appendonly yes——AOF日志开启
配置文件里其实可以更改daemonize设置节点为后台启动,只是win不支持。
另外几份也进行同样配置。全部配置完成后安装ruby、ruby的redis驱动和redis的ruby脚本redis-trib.rb:
因为在集群中使用的是节点的环回地址,springboot是连接不上的:
把所有节点的地址改成IP:
项目中都是使用IP,所以这一点不算坑