如何修复org.springframework.data.redis.RedisConnectionFailureException:java.net.SocketTimeoutException:读取超时

时间:2018-10-01 02:47:58

标签: java spring spring-boot caching redis

我使用redis缓存启动弹簧。我有2个Redis服务器和一个相当大的数据库。如果使用运行同一网络的Redis服务器,则缓存正常,共有619,000个用户。但是,如果我使用在码头上运行的redis并在晚上设置运行时间表,它总是会引发错误消息: org.springframework.data.redis.RedisConnectionFailureException:java.net.SocketTimeoutException:读取超时;嵌套的异常是redis.clients.jedis.exceptions.JedisConnectionException:java.net.SocketTimeoutException:读取超时

我知道这是因为redis必须等待连接太长时间,因此如果数据量太大,它将引发异常。我在构造函数上做了更多的超时,但仍然无法解决。信息如下:

@Bean
    public JedisConnectionFactory jedisConnectionFactory() {
        JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory();
        jedisConnectionFactory.setHostName(redisHostName);
        jedisConnectionFactory.setPort(redisPort);
        jedisConnectionFactory.setPassword(redisPassword);
        return jedisConnectionFactory;
    }
@Bean
public JedisPool getConfig() {
    JedisPoolConfig config =new JedisPoolConfig();
    JedisPool jedisPool = new JedisPool();
    config.setMaxTotal(100);
    config.setMaxIdle(200);
    config.setMinIdle(50);
    config.setMaxWaitMillis(30000);
    config.setTestOnBorrow(true);
    jedisPool = new JedisPool(config, redisHostName, redisPort,300000,redisPassword);
    return jedisPool;
}

那么如何克服这个问题。我已将超时设置为-1,但如果这样,我认为效果不佳

0 个答案:

没有答案