- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我需要使用 Azure Redis 集群、密码、SSL 以及管道支持。
到目前为止我一直在使用 Jedis,但它缺乏对集群+ssl+密码+管道组合的支持。
我尝试了生菜 ( https://github.com/mp911de/lettuce/releases/tag/4.1.2.Final ),但目前遇到了我无法自行解决的连接问题。
连接到 Azure Redis 群集 (2 * P4) 无需 SSL 即可工作,但使用 SSL 则不行。我还可以使用 SSL 连接到单个节点,但没有集群支持。问题是当组合 cluster+ssl 时,auth 调用超时(命令通过线路发送但超时)。
没有 SSL 工作代码的集群如下所示:
RedisURI redisURI = RedisURI.Builder.redis(host, 6379)
.withPassword(password)
.build();
RedisClusterClient client = RedisClusterClient.create(redisURI);
RedisAdvancedClusterCommands<String, String> connection = client.connect().sync();
connection.set("a", "1");
System.out.println(connection.get("a"));
输出为1
启用 SSL:
RedisURI redisURI = RedisURI.Builder.redis(host, 6380)
.withPassword(password)
.withSsl(true)
.build();
RedisClusterClient client = RedisClusterClient.create(redisURI);
RedisAdvancedClusterCommands<String, String> connection = client.connect().sync();
connection.set("a", "1");
System.out.println(connection.get("a"));
它挂起 1 分钟,log4j 日志如下所示:
2016-05-26 14:25:17,110 | TRACE | lettuce-nioEventLoop-3-1 | CommandEncoder | [/{CLIENT} -> {HOST}/{IP}:6380] Sent: *2
$4
AUTH
$44
{PASSWORD}
2016-05-26 14:26:17,134 | WARN | main | ClusterTopologyRefresh | Cannot connect to RedisURI [host='***', port=6380]
com.lambdaworks.redis.RedisCommandTimeoutException: Command timed out
at com.lambdaworks.redis.LettuceFutures.await(LettuceFutures.java:95)
at com.lambdaworks.redis.LettuceFutures.awaitOrCancel(LettuceFutures.java:74)
at com.lambdaworks.redis.AbstractRedisAsyncCommands.auth(AbstractRedisAsyncCommands.java:64)
at com.lambdaworks.redis.cluster.RedisClusterClient.connectToNode(RedisClusterClient.java:342)
at com.lambdaworks.redis.cluster.RedisClusterClient.connectToNode(RedisClusterClient.java:301)
at com.lambdaworks.redis.cluster.ClusterTopologyRefresh.getConnections(ClusterTopologyRefresh.java:240)
at com.lambdaworks.redis.cluster.ClusterTopologyRefresh.loadViews(ClusterTopologyRefresh.java:132)
at com.lambdaworks.redis.cluster.RedisClusterClient.loadPartitions(RedisClusterClient.java:468)
at com.lambdaworks.redis.cluster.RedisClusterClient.initializePartitions(RedisClusterClient.java:445)
at com.lambdaworks.redis.cluster.RedisClusterClient.connectClusterImpl(RedisClusterClient.java:359)
at com.lambdaworks.redis.cluster.RedisClusterClient.connect(RedisClusterClient.java:244)
at com.lambdaworks.redis.cluster.RedisClusterClient.connect(RedisClusterClient.java:231)
at com.ubikod.ermin.reach.tools.Test.main(Test.java:20)
Exception in thread "main" com.lambdaworks.redis.RedisException: Cannot retrieve initial cluster partitions from initial URIs [RedisURI [host='***', port=6380]]
at com.lambdaworks.redis.cluster.RedisClusterClient.loadPartitions(RedisClusterClient.java:471)
at com.lambdaworks.redis.cluster.RedisClusterClient.initializePartitions(RedisClusterClient.java:445)
at com.lambdaworks.redis.cluster.RedisClusterClient.connectClusterImpl(RedisClusterClient.java:359)
at com.lambdaworks.redis.cluster.RedisClusterClient.connect(RedisClusterClient.java:244)
at com.lambdaworks.redis.cluster.RedisClusterClient.connect(RedisClusterClient.java:231)
at com.ubikod.ermin.reach.tools.Test.main(Test.java:20)
保留 SSL 并禁用集群有效:
RedisURI redisURI = RedisURI.Builder.redis(host, 6380)
.withPassword(password)
.withSsl(true)
.build();
RedisClient client = RedisClient.create(redisURI);
RedisCommands<String, String> connection = client.connect().sync();
connection.set("a", "1");
System.out.println(connection.get("a"));
所以这不仅仅是一个 SSL 问题,它是一个 SSL + 集群组合问题。我尝试使用 withStartTls
、禁用对等验证、提高超时时间以及这些方法的任意组合,但没有成功。
知道这是库错误还是 Azure Redis 错误吗?
最佳答案
我检查了维基page lettuce
,我注意到该问题不是由库错误或 Azure Redis bug 引起的,不幸的是,只有 lettuce
不支持带有 SSL 的 Redis 集群,请参阅以下内容来自 wiki 页面的使用 String RedisURI 连接到 Redis
小节。
lettuce supports SSL only on regular Redis connections. Master resolution using Redis Sentinel or Redis Cluster are not supported since both strategies provide Redis addresses to the native port. Redis Sentinel and Redis Cluster cannot provide the SSL ports.
关于java - Azure Redis SSL集群+Lettuce Java(编辑: lettuce version < 4. 2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37471419/
我需要使用 Azure Redis 集群、密码、SSL 以及管道支持。 到目前为止我一直在使用 Jedis,但它缺乏对集群+ssl+密码+管道组合的支持。 我尝试了生菜 ( https://githu
我试图让 Lettuce 在旧主机失败后连接到新晋升的主机(前奴隶)。但是所有写入都停止了。故障主机重新连接后,写入继续,现在作为从属主机。并且它继续写信给新的主人(以前的奴隶)。 我尝试设置定期拓扑
在我的服务中,我尝试使用 Lettuce 客户端的 ReadFrom 方法确保强一致性。我正在写作,然后进行阅读。在客户端配置中,我已将 ReadFrom 设置为 SLAVE_PREFFERED。 L
本文整理了Java中io.lettuce.core.ZStoreArgs类的一些代码示例,展示了ZStoreArgs类的具体用法。这些代码示例主要来源于Github/Stackoverflow/Mav
我正在尝试使用 Spring Data Redis(版本:1.1.x)为我的 Redis 客户端(生菜客户端版本:2.3.3)设置一个连接工厂,但在将所有内容连接在一起时遇到了一些麻烦。 这是我的配置
我喜欢使用 Lettuce 来定义测试用例。在许多情况下,很容易编写 Lettuce 场景,使其可以原子方式运行或作为功能中其他场景的一部分运行。然而,我发现 Lettuce 也是一个有用的工具,可以
我们已经定义了 Lettuce 客户端连接工厂,以便能够连接到定义自定义套接字和命令超时的 Redis: @Bean LettuceConnectionFactory lettuceConnectio
前提:搭建好redis集群环境,搭建方式请看:http://www.zzvips.com/article/29914.html 1. 新建工程,pom.xml文件中添加redis支持
需要使用lettuce在redis-cluster模式下运行一批命令。对于应该在一个分区中运行的命令,我希望在一个节点中顺序运行它们。 据我所知,Lettuce 可以通过将 AutoFlushComm
有经验的人可以同时使用这两种方法吗 Lettuce和 Pyccuracy描述它们在功能和用途方面的差异? 来自Lettuce Overview文档: Lettuce is a very simple
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 9 年前。 Improve t
尝试运行简单的生菜测试场景(来自 here )。我得到这些: Traceback (most recent call last): File "C:\Python27\lib\site-packa
我正在学习 Redis for Java 是我认为我真正缺少的关于 Redis api 的东西。 假设我们有以下用于创建连接的代码: RedisClient redisClient = RedisCl
redisListCommands.brpop(0, queueName) 我已将超时设置为 0(即没有超时)。为什么这命令带来 io.lettuce.core.RedisCommandTimeout
我正在尝试查找有关如何配置和使用 Lettuce 的引用资料具有客户端一致性哈希的 Redis 客户端。 这种分片方法在 ShardedJedis 中实现来自 Jedis 客户端并在 Redis pa
我可以使用 Lettuce 管理 redis 通知吗?我找不到任何示例或文档。当元素在 Redis 中过期时,我只需要在我的 Java 代码中有一些通知/回调。 让我举个例子...对不起,阅读 Let
我在 Akka 中使用 redis,所以我不需要阻塞调用。生菜内置了异步 future 调用。但是 Jedis 是 Redis 推荐的客户端。有人可以告诉我我是否以正确的方式使用它们。如果是的话,哪个
本文整理了Java中io.lettuce.core.ZStoreArgs.sum()方法的一些代码示例,展示了ZStoreArgs.sum()的具体用法。这些代码示例主要来源于Github/Stack
本文整理了Java中io.lettuce.core.ZStoreArgs.max()方法的一些代码示例,展示了ZStoreArgs.max()的具体用法。这些代码示例主要来源于Github/Stack
本文整理了Java中io.lettuce.core.ZStoreArgs.()方法的一些代码示例,展示了ZStoreArgs.()的具体用法。这些代码示例主要来源于Github/Stackoverfl
我是一名优秀的程序员,十分优秀!