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

2

8

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?

Whoremaster answered 25/5, 2015 at 13:18 Comment(0)
W
6

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

spring.redis.timeout=5000
Waiwaif answered 22/9, 2015 at 16:14 Comment(4)
Really? Have you confirmed that this actually has an effect? I cannot see any timeout property in org.springframework.boot.autoconfigure.redis.RedisProperties!Geniegenii
Here is a list of common properties: docs.spring.io/spring-boot/docs/current/reference/html/…Waiwaif
... and that property is not in the list .. maybe it was in the pastDichlamydeous
@Dichlamydeous AFAIK there is not master list of all available properties. The list of common properties in that link is not comprehensive, however it does look like the property has changed to utilize the "spring.data.redis" prefix: github.com/spring-projects/spring-boot/blob/main/…Waiwaif
A
0

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

Alfredalfreda answered 22/6, 2023 at 4:57 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.