问题描述
我得到无法连接到Redis;尝试从Spring响应式应用程序连接Azure Redis缓存时,嵌套异常是使用RedisTempalte的io.lettuce.core.RedisConnectionException 错误。
我已经在属性文件中进行了以下配置
spring.redis.host=hostName
spring.redis.port=6379
spring.redis.password=password
还使用LettuceConnectionFactory尝试了基于Java的配置
解决方法
由于未在Redis客户端中使用SSL,因此在AWS ElastiCache中启用密码身份验证时遇到了相同的问题。
同一个RedisConfig.java使用SSL进行连接,我的错误消失了。顺便说一下,我正在使用Spring Reactive。
@Configuration
@ConfigurationProperties(prefix = "spring.redis")
@Setter
public class RedisConfig {
private String host;
private String password;
@Bean
@Primary
public ReactiveRedisConnectionFactory reactiveRedisConnectionFactory(RedisConfiguration defaultRedisConfig) {
LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
.useSsl().and()
.commandTimeout(Duration.ofMillis(60000)).build();
return new LettuceConnectionFactory(defaultRedisConfig,clientConfig);
}
@Bean
public RedisConfiguration defaultRedisConfig() {
RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
config.setHostName(host);
config.setPassword(RedisPassword.of(password));
return config;
}
}