Redis 3.0 集群
Redis 3.0 提供了集群机制
集群没有中心几点,,主节点之间是两两相连(意味着他们有着频繁的网络IO,所以当集群数量不多时可以使用3.0的集群特性,反之就按需求适当是使用Redis主从+Sentinel或Twemproxy代理)
当Redis集群一启动就会默认启动6个几点,3个为主节点,3个为从节点,当其中一个主节点挂掉了,它下面的从节点自动升级为主节点(类似与加了Sentinel)
图:
Redis 3.0+ 可以更改槽位和指定区间段的槽的数据迁移
3.0+的安装配置就不说了
创建集群:
要先创建槽位,槽位分配通过redis-trib这个ruby脚本分配,3个主实例,3个从实例
在3.0的源码src目录下执行redis-trib.rb脚本,命令:./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005
--replicas 1:每个主节点要有1个从节点,为1的时候,前三个地址是主,后三个为从,为2,后6个为从节点
连接集群:
redis-cli -p 7001(端口写哪个都行) -c(表示连接的是集群模式)
总结:
1、主节点分槽,命令能做就做,不能做给其他主节点做并提示在另一台服务器上做了(自动转向),全部做不了再返回错误
2、主节点两两通信
3、简单,建个列表,连哪个都可以
4、默认16384槽位,n台服务器平分,槽位上数据可以迁移
5、默认3主3从,一个主挂了,他下面的从会变成主,等旧主重启了后,会变成新主的从
6、集群必须满足拥有16384个槽位才能正常工作,场景:本有3主3从服务器,其中一对主从服务器挂掉了,不满足16384槽位,可以在3.0源码src目录下使用./redis-trib.rb的reshard命令