vert.x缺陷---不支持redis的哨兵模式(v3.5.2)-Sentinel unreachable. ERR unknown command `SELECT`, with args

本文详细介绍了在使用 Vert.x v3.5.2 版本时遇到的不支持 Redis Sentinel 模式的缺陷。问题在于 Vert.x 在连接 Sentinel 时尝试执行 `SELECT` 命令,而 Sentinel 不支持此命令。通过源码分析、客户端测试和 Telnet 验证,确定了问题原因并提出了修改 Vert.x 代码的解决方案,以便正确处理 Sentinel 连接。
摘要由CSDN通过智能技术生成

总览

redis的哨兵模式,不做过多解释,可以网上自行搜索,仅仅说明一些和本缺陷有关的内容吧:哨兵是负责放哨的,它本身不负责操作数据,并且redis本身的节点都是也是主从,每一个节点都会一个哨兵,它们的端口号不同。客户端在连接的时候,配置的是哨兵的地址,连接有两个过程:

  1. 连接哨兵,验证密码,然后通过主节点名称去咨询主节点的IP和端口。
  2. 客户端拿到主节点地址后,然后再去真正的操作数据。

这次就只强调这两个过程吧,因为vertx的缺陷和这个有关系。目前还没有调研最新的版本有没有解决这个问题,就当记录一个疑难问题的分析和解决过程了。

问题描述

从配置上支持了哨兵,vertx那边也提供了一些API吧,在redisOptions里面,如下:

		RedisOptions options = new RedisOptions();
		String masterNames = info.getMasterNames();
		if (masterNames != null && masterNames.trim().length() != 0) {
   
			options.setMasterName(masterNames);
		}
		String nodesStr = info.getNodes();
		String[] nodesArray = nodesStr.split(",");
		List<String> nodes = Arrays.asList(nodesArray);
		if (nodes != null && nodes.size() > 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值