建议搭建步骤:
- 1、安装6台单机redis
- 2、修改配置文件:redis.conf
- 3、在某一台上执行集群命令
效果
- 1、集群搭建成功后,从节点宕机,不会影响集群的使用,从节点启动后,会自动加入集群,还是从节点。
- 2、主节点宕机后, 不会影响集群的使用,从节点会自动生成主节点,原主节点启动后,会自动加入集群,成为原从节点的从节点
- 上述效果不需要使用哨兵
搭建步骤及脚本:
-
常见中间件安装语句中的Redis安装脚本。
-
注意事项:
- 在 redis.conf 中一定要加入 masterauth 和 requirepass,不然主从切换会出现问题,尽量保持这两者密码一致。
-
集群命令
- redis-cli --cluster create --cluster-replicas 1 127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 -a 123456
- 注意到最后的-a 输入密码:ljfirst或者你自己的密码
- redis5以后,不需要额外安装ruby
-
校验
- 安装时会出现提示,并且会询问是否同意set above configuration? 你输入yes就行
- 输入redis-cli,输入AUTH 密码验证,输入cluster nodes 或者cluster info查看集群信息。
使用
- 命令行使用(集群模式需要加 -c)
- redis-cli -c
- 客户端使用
@Test
public void testJedisCluster() throws Exception {
// 第一步:使用JedisCluster对象。需要一个Set<HostAndPort>参数。Redis节点的列表。
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("192.168.204.134", 7001));
nodes.add(new HostAndPort("192.168.204.134", 7002));
nodes.add(new HostAndPort("192.168.204.134", 7003));
nodes.add(new HostAndPort("192.168.204.134", 7004));
nodes.add(new HostAndPort("192.168.204.134", 7005));
nodes.add(new HostAndPort("192.168.204.134", 7006));
JedisCluster jedisCluster = new JedisCluster(nodes);
// 第二步:直接使用JedisCluster对象操作redis。在系统中单例存在。
jedisCluster.set("hello", "100");
String result = jedisCluster.get("hello");
// 第三步:打印结果
System.out.println(result);
// 第四步:系统关闭前,关闭JedisCluster对象。
jedisCluster.close();
}
新增节点
- redis一对主从同时宕机,slot并不会重新分配,导致部分redis不可以用,需要重新分配slot.
- 解决办法:原主从可以修复的话,从新上线,会自动加入集群,原主从不可以加入的话,新申请机器,手动分配slot
- 步骤
- 手动加入主节点(此时是0 slot),在给这个主节点陪个从节点
- 通过指令redis-cli --cluster add-node加入,具体参考redis 5.0中使用 redis-cli 添加cluster node 并 reshard,只能移动空的slot,出现问题,使用fix指令。
- 参考博客

2424

被折叠的 条评论
为什么被折叠?



