amazon-web-services - lettuce redis 6.0.0.RELEASE 未连接到启用传输功能的 AWS Elastic Cache Redis 集群和具有密码的新默认用户
问题描述
我创建了 rediscluster 并分配了具有新默认用户和密码的用户管理组,我可以使用此命令连接到 redis 集群 redis-cli -u "redis://username:password@hostname:6379" --tls此命令使用用户名和密码以及 tls 选项。另一方面,当我尝试在下面的 Java 代码片段中使用生菜客户端 6.0.0.RELEASE 做完全相同的事情时,我得到了连接超时异常。
import io.lettuce.core.*;
import io.lettuce.core.api.StatefulRedisConnection;
import io.lettuce.core.api.sync.RedisCommands;
import java.util.*;
class RedisTest{
public static void main(String[] args){
System.out.println("hello world2!");
RedisClient redisClient = RedisClient.create(RedisURI.Builder.redis("hostname",6379).withAuthentication("default","a-str0ng-pa))word".toCharArray()).withStartTls(true).build());
StatefulRedisConnection<String, String> connection = redisClient.connect();
RedisCommands<String, String> syncCommands = connection.sync();
syncCommands.set("key", "Hello, Redis!");
connection.close();
redisClient.shutdown();
System.out.println("exit working!");
}
}
我收到以下错误
Exception in thread "main" io.lettuce.core.RedisConnectionException: Unable to connect to hostname:6379
at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78)
at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56)
at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:320)
at io.lettuce.core.RedisClient.connect(RedisClient.java:211)
at io.lettuce.core.RedisClient.connect(RedisClient.java:196)
at RedisTest.main(RedisTest.java:11)
Caused by: io.lettuce.core.RedisCommandTimeoutException: Connection initialization timed out. Command timed out after 1 minute(s)
at io.lettuce.core.internal.ExceptionFactory.createTimeoutException(ExceptionFactory.java:65)
at io.lettuce.core.protocol.RedisHandshakeHandler.lambda$channelRegistered$0(RedisHandshakeHandler.java:62)
at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98)
at io.netty.util.concurrent.PromiseTask.run(PromiseTask.java:106)
at io.netty.util.concurrent.DefaultEventExecutor.run(DefaultEventExecutor.java:66)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)
解决方案
推荐阅读
- c# - 我在 CustomerCreateOptions 中找到 SourceToken 选项
- azure - How to use output variables across agent jobs in azure release pipeline
- mysql - Getting varchar value in select with MySQL Connector/Arduino
- excel - 如何从 VBA 返回数组
- mysql - #1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册以获取正确的语法
- javascript - Passing a variable to determine connection
- java - android/java 中两个日期与今天相比的百分比
- java - 如何在 javascript 程序中导入 Java
- swift - 如何在 SwiftUI 中给 UIButton 一个渐变并给该按钮一个具有相同渐变的底部阴影?
- javafx - 在 javafx 中正确绑定对象并使其更新?