按照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
可知总共有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
分配一部分槽给6382.
./redis-trib.rb add-node 192.168.209.101:6382 192.168.209.101:6379
后续需要输入接受方的节点id。还有分出去的槽数。
删除一个槽位
需要先迁移数据
删除节点
./redis-trib.rb del-node 192.168.209.101:6382 a908c0615b888144eb190e1e58b486dcc7a18263
集群故障机制
集群模式的弊端
1 如果多个可以不在一个槽中,无法执行mget命令,如下
2 每个节点只有一个库。