redisssl配置在springboot内核中并不明确

envsm3lx  于 2021-06-09  发布在  Redis
关注(0)|答案(0)|浏览(259)

Spring Boot:2.0.3.释放
莴苣芯:5.0.4.0
spring数据redis:2.0.8.0版本
所以首先我的问题解决了,我只是不明白为什么,它困扰着我,所以一些澄清这是感谢。
我正在开发的一个微服务中有一个redis配置:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import io.lettuce.core.RedisClient;
import io.lettuce.core.RedisURI;
import io.lettuce.core.api.StatefulRedisConnection;
import io.lettuce.core.resource.ClientResources;
import io.lettuce.core.resource.DefaultClientResources;

@Configuration
public class LettuceConfig {

    @Bean(destroyMethod = "shutdown")
    ClientResources clientResources() {
        return DefaultClientResources.create();
    }

    @Bean(destroyMethod = "shutdown")
    RedisClient redisClient(ClientResources clientResources) {
        String host = System.getenv("spring_redis_host") != null ? System.getenv("spring_redis_host") : "127.0.0.1";
        String port = System.getenv("spring_redis_port") != null ? System.getenv("spring_redis_port") : "6379";
        String password = System.getenv("spring_redis_password") != null ? System.getenv("spring_redis_password") : "";
        Boolean isLocal = host.equals("127.0.0.1");

        RedisURI redisUri = RedisURI.Builder.redis(host).withSsl(!isLocal).withPassword(password).withPort(Integer.parseInt(port))
                .build();
        return RedisClient.create(clientResources, redisUri);
    }

    @Bean(destroyMethod = "close")
    StatefulRedisConnection<String, String> connection(RedisClient redisClient) {
        return redisClient.connect();
    }
}

在我将actuator添加到项目后,我意识到该服务无法连接到aws中的远程redis,该服务引发了以下异常:

java.io.IOException: Connection reset by peer

在快速的google搜索之后,大多数答案都表明问题出在我的ssl连接上,但是我很困惑,因为redisuri包含了withssl函数调用。
出于好奇,我在application.properties文件中添加了以下属性,因为我在其他服务中使用基于属性的redis配置,而且我知道它可以工作。

spring.redis.ssl=true

现在这解决了我的问题,但我不明白为什么这种方法有效而redisuri版本无效。
有谁能给我一个解释,谁对以下情况有清楚的了解?
我可以分享更多的日志,如果需要的话。谢谢您!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题