我使用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,但如果这样,我认为效果不佳