在使用redission的分布式锁的时候,两台机器,其中一台遇到如下报错
org.redisson.client.RedisTimeoutException: Redis server response timeout (3000 ms) occured for comman
版本如下
<groupId>org.redisson</groupId>
<artifactId>redisson-spring-boot-starter</artifactId>
<version>3.9.0</version>
分析:和服务器的机器环境有关系,一台是腾讯云机器(没有问题),另一台是内网机器,使用的redis是腾讯云的。所以内网机器连接redis,需要走外网ip。
解决:
设置1秒钟ping一次来维持连接
.setPingConnectionInterval(1000)
@Configuration
public class RedissonConfig {
@Value("${spring.redis.host}")
String redisHost;
@Value("${spring.redis.port}")
String redisPort;
@Value("${spring.redis.password}")
String redisPass;
@Value("${spring.redis.database}")
String database;
@Bean
public RedissonClient redissonClient() {
Config config = new Config();
config.useSingleServer() // 使用单机模式
.setAddress("redis://" + redisHost + ":" + redisPort)
.setDatabase(Integer.parseInt(database))
.setKeepAlive(true)
// 设置1秒钟ping一次来维持连接
.setPingConnectionInterval(1000)
.setPassword(redisPass);
return Redisson.create(config);
}
}