我每 5 分钟运行一次批处理作业,并且我不希望其他节点运行相同的作业,因此我使用 Jedis 锁来锁定对象 5 分钟。这样,如果其他节点尝试运行相同的作业,它们将不会获得锁定。作业在获取锁后开始,当我尝试从 Redis 读取它时,出现以下异常:
'Caused by: redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
at redis.clients.util.Pool.getResource(Pool.java:53)
at redis.clients.jedis.JedisPool.getResource(JedisPool.java:226)
at redis.clients.jedis.JedisPool.getResource(JedisPool.java:16)
at org.springframework.data.redis.connection.jedis.JedisConnectionFactory.fetchJedisConnector(JedisConnectionFactory.java:194)
... 40 more
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out
at redis.clients.jedis.Connection.disconnect(Connection.java:224)
at redis.clients.jedis.BinaryClient.disconnect(BinaryClient.java:941)
at redis.clients.jedis.Connection.close(Connection.java:214)
at redis.clients.jedis.BinaryClient.close(BinaryClient.java:947)
at redis.clients.jedis.Jedis.close(Jedis.java:3412)
at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:117)
at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:836)
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:434)
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:361)
at redis.clients.util.Pool.getResource(Pool.java:49)'
Run Code Online (Sandbox Code Playgroud)
这就是我的代码
@Bean
public Jedis getJedis()
{
Jedis jedis = new Jedis(this.redisHost, nteger.valueOf(this.redisPort));
jedis.auth(this.redisPassword);
return jedis;
}
Run Code Online (Sandbox Code Playgroud)
spring-boot Application.properties 文件
# DATA REDIS …Run Code Online (Sandbox Code Playgroud) 有没有人在 Spring Boot 应用程序中成功配置了两个具有不同数据源的 hikari 连接池?如何使用 application.properties 来做到这一点?
使用 Lettuce,我们如何配置 Spring Data Redis 运行在主机 x 的 6379 端口和从属运行在相同或不同主机但在端口 6380 上?
java ×2
redis ×2
db2 ×1
hikaricp ×1
informix ×1
jedis ×1
lettuce ×1
spring ×1
spring-boot ×1
spring-data ×1