配置Spring Data Redis以通过Elasticache配置端点执行所有操作



描述

Spring Data Redis是否可以使用Elasticache的配置端点来执行所有集群操作(即读取、写入等)?

详细描述

我有一个Spring Boot应用程序,它使用Redis集群作为数据存储。Redis集群托管在启用集群模式的AWS Elasticache上。Elasticache集群有3个碎片,分布在12个节点上。集群运行的Redis版本为6.0。

该服务没有正确写入或从群集中检索数据。每当执行这些操作时,我都会收到类似以下的消息:

io.lettuce.core.RedisCommandExecutionException: MOVED 16211 10.0.7.254:6379

在搜索互联网时,似乎没有为群集正确配置服务。修复方法似乎是将spring.redis.cluster.nodes属性设置为Elasticache集群中所有节点的列表(请参阅此处和此处)。考虑到Elasticache配置端点应该用于所有读写操作,我觉得这是不必要的(参见"Finding Endpoints for a Redis(Cluster Mode Enabled)Cluster";此处的部分)。

我的问题是:Spring Data Redis是否可以像AWS文档描述的那样,使用Elasticache的配置端点来执行所有读取和写入?如果Spring Data Redis可以按照预期的方式使用配置端点,我宁愿不交出所有节点的列表。这对我来说似乎是一个严重的限制。

提前感谢!

以下是我发现的有效方法:

@Bean
public RedisConnectionFactory lettuceConnectionFactory()
{
LettuceClientConfiguration config = 
LettucePoolingClientConfiguration
.builder()
.*your configuration settings*
.build();
RedisClusterConfiguration clusterConfig = new RedisClusterConfiguration();
clusterConfig.addClusterNode(new RedisNode("xxx.v1tc03.clustercfg.use1.cache.amazonaws.com", 6379));
return new LettuceConnectionFactory(clusterConfig, config);
}

其中xxx是弹性缓存集群中的名称。

相关内容

  • 没有找到相关文章

最新更新