我在集群模式下使用AWS ElastiCache(Redis)。我有两个实现来连接ElastiCache。其中一种实现是直接使用本机莴苣驱动程序,另一种是使用Spring数据,并将莴苣作为底层驱动程序。AWS ElastiCache具有群集配置endpoint。我想用这个endpoint连接到ElastiCache。我能够使用带有本机驱动程序实现的群集endpoint成功连接到ElastiCache,但在使用带有群集endpoint的spring数据时,会出现以下错误
Spring数据:1.8.9-RELEASE(无法使用更高版本的Spring)
莴苣:4.5.0决赛
@Bean
public LettuceConnectionFactory redisConnectionFactory() {
LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory();
lettuceConnectionFactory.setHostName(<cluster_endpoint>);
lettuceConnectionFactory.setPort();
lettuceConnectionFactory.setUseSsl(Boolean.valueOf(useSsl));
//lettuceConnectionFactory.setPassword(password);
return lettuceConnectionFactory;
}
错误:
Caused by: org.springframework.data.redis.RedisSystemException: Error in execution; nested exception is com.lambdaworks.redis.RedisCommandExecutionException: MOVED 12894 cache---.usw2.cache.amazonaws.com:6379
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:50)
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:48)
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:41)
它在以下两种情况下工作正常-
1)我使用集群节点endpoint,并通过RedisClusterConfiguration注入LettuceConnectionFactory
。
2)如果我使用Lettuce作为直接实现(不是通过Spring数据)使用StatefulRedisClusterConnection
。
上述两个错误的原因是什么?我更喜欢通过使用集群配置endpoint将莴苣与Spring数据结合使用。
下面是使用Spring数据连接到Elasticache Redis群集的解决方案-
使用ElastiCache群集配置endpoint:
@Bean
public RedisClusterConfiguration redisClusterConfiguration() {
RedisClusterConfiguration clusterConfiguration = new
RedisClusterConfiguration();
clusterConfiguration.clusterNode("host", port);
new LettuceConnectionFactory(clusterConfiguration);
}
使用ElastiCache节点endpoint:
@Bean
public RedisClusterConfiguration redisClusterConfiguration() {
RedisClusterConfiguration clusterConfiguration = new RedisClusterConfiguration()
.clusterNode("redis-cluster----0001-001.redis-cluster---.usw2.cache.amazonaws.com",6379)
.clusterNode("redis-cluster----0001-002.redis-cluster---.usw2.cache.amazonaws.com",6379)
.clusterNode("redis-cluster----0001-003.redis-cluster---.usw2.cache.amazonaws.com",6379)
.clusterNode("redis-cluster----0001-004.redis-cluster---.usw2.cache.amazonaws.com",6379);
return clusterConfiguration;
}
感谢Mark Paluch,他在Spring数据论坛上回复了我的问题。以下是细节-https://jira.spring.io/browse/DATAREDIS-898
我安装了Maven 3.2.5并在我的项目目录中执行了。显示以下错误: 插件org.apache.maven.plugins:maven-resources-plugin:2.6或其依赖项无法解析:无法读取org.apache.maven的工件描述符。plugins:maven-resources-plugin:jar:2.6:无法将工件org.apache.maven.plugins:maven
然后错误显示在蜂巢: 失败:执行错误,从org.apache.hadoop.hive.ql.exec.mr.MapRedWork返回代码-101。org.apache.hadoop.mapreduce.v2.util.MRApps.setEnvFromInputProperties(Ljava/util/Map;Ljava/lang/String;Ljava/lang/String;Lorg/ap
问题内容: 我正在尝试使用以下代码执行Redis的几种异步方法 所有方法成功执行 但是我得到了错误 该方法被执行并返回true,它可能将其解释为true,但是我不明白为什么它必须使用该方法应用于它? 我可以通过将一个函数(err,结果)作为最后一个元素添加到client.hincrby中来获得增量的结果。但是,如何在end函数的result变量中获得所有结果呢? 问题答案: 我想您使用的async
我有一个非常基本的页面,包含一个DataTable和一个CommandButton: 方法< code > testbb . getlistofelements()只返回< code>Integer值的集合。重要的是,DataTable设置了属性< code > draggableColumns = " true " 。如果我单击CommandButton,我会得到以下< code > NullP
也许我完全误解了应该如何工作,但除了返回错误之外,我似乎无法让它做任何事情。 我是这么做的: Mongod正在运行 我想备份一个名为“mydb”的数据库 我在mongo shell中 我尝试了命令并得到了上面的错误 我尝试了和,都有相同的问题 我在这里做错了什么?
我在获取H2 In Memory数据库以填充时遇到麻烦。这里的想法是拥有唯一的BuildingCode作为主键和id。 我发现了以下类级错误: org.hibernate.tool.schema.spi.命令验收异常:通过JDBC语句执行DDL“更改表属性添加列building_codevarchar(255)not null”时出错 原因:org。h2。jdbc。JdbcSQLIntegrity