按照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
集群故障机制
集
群
中
的
每
一
个
节
点
都
会
定
期
向
其
他
节
点
发
送
p
i
n
g
命
令
,
如
果
没
有
收
到
回
复
,
将
会
判
断
为
疑
似
下
线
,
如
果
有
超
过
半
数
\color{#FF0000}{集群中的每一个节点都会定期向其他节点发送ping命令,如果没有收到回复,将会判断为疑似下线,如果有超过半数}
集群中的每一个节点都会定期向其他节点发送ping命令,如果没有收到回复,将会判断为疑似下线,如果有超过半数
的
节
点
认
为
某
一
个
节
点
疑
似
下
线
,
那
么
该
节
点
将
会
标
记
为
下
线
,
可
以
用
节
点
主
从
机
制
来
达
到
高
可
用
。
\color{#FF0000}{的节点认为某一个节点疑似下线,那么该节点将会标记为下线,可以用节点主从机制来达到高可用。}
的节点认为某一个节点疑似下线,那么该节点将会标记为下线,可以用节点主从机制来达到高可用。
集群模式的弊端
1 如果多个可以不在一个槽中,无法执行mget命令,如下
2 每个节点只有一个库。