繁体   English   中英

Redis 运行时连接被拒绝 Spring 启动

[英]Redis Connection refused When Run Spring Boot

大家好,我有 Redis 通过以下命令作为 docker 图像运行

docker run   -e REDIS_PASSWORD=password123   -v /home/abed/project/Redis-Cache-Using-Spring-Boot/volume:/bitnami/redis/data    bitnami/redis:latest

and setup configuration inside spring boot application but i cant connection with Redis from spring boot i have this error when run application and call API, this API will use Redis

java.net.ConnectException: Connection refused
    at java.base/sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) ~[na:na]
    at java.base/sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:777) ~[na:na]
    at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:330) ~[netty-transport-4.1.72.Final.jar:4.1.72.Final]
    at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:334) ~[netty-transport-4.1.72.Final.jar:4.1.72.Final]
    at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:710) ~[netty-transport-4.1.72.Final.jar:4.1.72.Final]
    at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:658) ~[netty-transport-4.1.72.Final.jar:4.1.72.Final]

我在 spring 启动应用程序中使用了这个配置

    @Bean(name = "redisTemplate")
public RedisTemplate<String,String> redisTemplate(RedisConnectionFactory factory){
    final RedisTemplate<String,String> template=new RedisTemplate<String, String>();
    template.setKeySerializer(new StringRedisSerializer());
    template.setHashKeySerializer(new GenericToStringSerializer<String>(String.class));
    template.setHashValueSerializer(new Jackson2JsonRedisSerializer<String>(String.class));
    template.setValueSerializer(new Jackson2JsonRedisSerializer<String>(String.class));
    RedisStandaloneConfiguration configuration=new RedisStandaloneConfiguration(host,port);
    template.setConnectionFactory(factory);
    return template;
}

并在RedisUtility class 中注入RedisTemplate看看下面的代码

@Service
public class RedisUtility {


    private final RedisTemplate<String,String> redisTemplate;

    private final Gson gson;

    public RedisUtility(RedisTemplate<String,String> redisTemplate,Gson gson)
    {
        this.redisTemplate=redisTemplate;
        this.gson=gson;
    }


    public void setValue(final  String key, UserDto authUserDto)
    {
        redisTemplate.opsForValue().set(key,gson.toJson(authUserDto));
        redisTemplate.expire(key,10, TimeUnit.MINUTES);
    }

    public UserDto getValue(final String key)
    {
        return gson.fromJson(redisTemplate.opsForValue().get(key),UserDto.class);
    }

    public void deleteKeyFormed(String key)
    {
        redisTemplate.delete(key);
    }
}

我忘记了 application.yml

server.port=8088
spring.redis.database=0
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=password123
spring.redis.timeout=60000

您能否检查是否可以使用端口 6379 上的 redis-cli 连接到您的 Redis docker 容器?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM