按照ruby

yum -y install zlib ruby rubygems
gem install redis

关闭主从,开启集群,

cluster-enabled yes

设置集群配置文件

cluster-config-file nodes-6380.conf

启动各个节点,进入redis下的src执行如下命令,执行之前确保各个节点服务开启:

./redis-trib.rb create --replicas 0 192.168.209.101:6379 192.168.209.101:6380 192.209.101.102:6381

用客户端连接任意一个节点,需要加-c,不然不会自动重连接

./src/redis-cli -h 192.168.209.101 -p 6379 -c

查看各个节点插槽信息

cluster nodes

redis 关闭集群 关闭redis集群服务_redis


可知总共有16394和槽位。

jedis连接

Set<HostAndPort> jedHostAndPorts=new HashSet<>();
        jedHostAndPorts.add(new HostAndPort("192.168.209.101",6379));
        JedisCluster cluster=new JedisCluster(jedHostAndPorts);
        String result = cluster.get("abcd");
        System.out.println(result);

添加一个节点

./redis-trib.rb add-node 192.168.209.101:6382 192.168.209.101:6379

redis 关闭集群 关闭redis集群服务_ruby_02


分配一部分槽给6382.

./redis-trib.rb add-node 192.168.209.101:6382 192.168.209.101:6379

后续需要输入接受方的节点id。还有分出去的槽数。

删除一个槽位

需要先迁移数据

redis 关闭集群 关闭redis集群服务_ruby_03


删除节点

./redis-trib.rb del-node 192.168.209.101:6382 a908c0615b888144eb190e1e58b486dcc7a18263

集群故障机制
redis 关闭集群 关闭redis集群服务_高可用_04
redis 关闭集群 关闭redis集群服务_ruby_05

集群模式的弊端

1 如果多个可以不在一个槽中,无法执行mget命令,如下

redis 关闭集群 关闭redis集群服务_redis_06


2 每个节点只有一个库。