terry
terry

Reputation: 351

How to configure timeout of JedisConnectionFactory based on Spring Boot framework?

I'm using Spring Boot and I'm confused how to configure the timeout to connect Redis.

Currently, my configurations are:

application.yml:

spring.redis.host: myhost
spring.redis.port: 6379
spring.redis.pool.max-idle: 8
spring.redis.pool.min-idle: 0
spring.redis.pool.max-active: 8
spring.redis.pool.max-wait: -1

StringRedisDao.java:

@Autowired
public StringRedisDao(final StringRedisTemplate template, final ObjectMapper mapper) {
    if (template.getConnectionFactory() instanceof JedisConnectionFactory) {
        ((JedisConnectionFactory) template.getConnectionFactory()).getShardInfo().setTimeout(5000);
        ((JedisConnectionFactory) template.getConnectionFactory()).setTimeout(5000);
    }
    this.template = template;
    this.mapper = mapper;
}

I use Wireshark to capture the packets and I found that the Redis was disconnected after 2 seconds, not 5 seconds as I set in the code above.

Because of this, I cannot perform a requests that the query time of Redis is more than 2 seconds.

Please, how can I do this?

Upvotes: 8

Views: 25303

Answers (2)

firozSujan
firozSujan

Reputation: 126

It might be helpful to someone. I have used Redisson client for redis implementation. Setting timeout for redis use spring.cache.redis.time-to-live=5000

Upvotes: 0

Bal
Bal

Reputation: 2087

There is also a configuration setting you can put in application.properties:

spring.redis.timeout=5000

Upvotes: 6

Related Questions