java - 无法使用 Lettuce 连接到本地 Redis 集群
问题描述
我正在像这样使用 Docker 运行 Redis 本地集群
docker run --env "IP=0.0.0.0" -p 7000-7007:7000-7007 -p 5000-5002:5000-5002 -p 6379:6379 grokzen/redis-cluster:5.0.3
通过 telnet 连接时,我无法发送命令,例如
telnet localhost 7000
然而,当尝试使用以下代码连接生菜客户端时
RedisURI redisURI = RedisURI.Builder.redis("localhost", 7000).build();
RedisClusterClient client = RedisClusterClient.create(redisURI);
StatefulRedisClusterConnection<String, String> connection = client.connect();
RedisStringCommands sync = connection.sync();
String value = (String) sync.get("key");
抛出以下异常
Exception in thread "main" io.lettuce.core.RedisException: Cannot retrieve initial cluster partitions from initial URIs [RedisURI [host='localhost', port=7000]]
at io.lettuce.core.cluster.RedisClusterClient.loadPartitions(RedisClusterClient.java:865)
at io.lettuce.core.cluster.RedisClusterClient.initializePartitions(RedisClusterClient.java:819)
at io.lettuce.core.cluster.RedisClusterClient.connect(RedisClusterClient.java:345)
at io.lettuce.core.cluster.RedisClusterClient.connect(RedisClusterClient.java:320)
at com.foo.DeleteMe.main(DeleteMe.java:22)
Caused by: io.lettuce.core.RedisConnectionException: Unable to establish a connection to Redis Cluster
at io.lettuce.core.cluster.topology.AsyncConnections.get(AsyncConnections.java:84)
at io.lettuce.core.cluster.topology.ClusterTopologyRefresh.loadViews(ClusterTopologyRefresh.java:68)
at io.lettuce.core.cluster.RedisClusterClient.doLoadPartitions(RedisClusterClient.java:871)
at io.lettuce.core.cluster.RedisClusterClient.loadPartitions(RedisClusterClient.java:844)
... 4 more
Suppressed: io.lettuce.core.RedisConnectionException: Unable to connect to localhost:7000
Caused by: java.nio.channels.UnresolvedAddressException
at sun.nio.ch.Net.checkAddress(Net.java:101)
at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:622)
at io.netty.channel.socket.nio.NioSocketChannel.doConnect(NioSocketChannel.java:209)
at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.connect(AbstractNioChannel.java:199)
... 21 more
解决方案
<!-- The configuration of maven-jar-plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.4</version>
<configuration>
<!-- put your configurations here -->
<shadedArtifactAttached>true</shadedArtifactAttached>
<shadedClassifierName>shadeall</shadedClassifierName>
<relocations>
<relocation>
<pattern>io.netty</pattern>
<shadedPattern>com.ly.dc.io.netty</shadedPattern>
</relocation>
</relocations>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
推荐阅读
- java - java中的正则表达式提取日期和时间
- excel - 如何使用 Power Query 更新主文件中的现有行
- c++ - SFML Release 编译中奇怪的绿色窗口边框
- r - 加载 Shinydashboard 图像
- c++ - 分层状态机涉及哪些原则,以及如何实现基本模型?
- c# - 使用用户名和密码的 Firebase 身份验证不起作用
- openstreetmap - OpenstreetMap Overpass API - 验证标签(如果存在)
- reporting-services - 带有条件图像的 SSRS 数学
- php - Laravel 用更少的数据测试分页
- junit - Hamcrest - Matchers.hasProperty:如何检查对象列表是否包含具有具体值的对象