So i'm using java with spring data redis 2.4.8 for caching, when i'm trying to get values from cache (i have a list of keys), in logs i see that redis always closing connection:
2024-04-02 09:16:14.851 DEBUG 1655457 --- [nio-8080-exec-3] o.s.d.redis.core.RedisConnectionUtils : Fetching Redis Connection from RedisConnectionFactory2024-04-02 09:16:14.943 DEBUG 1655457 --- [nio-8080-exec-3] o.s.d.redis.core.RedisConnectionUtils : Closing Redis Connection.2024-04-02 09:16:14.944 DEBUG 1655457 --- [nio-8080-exec-3] o.s.d.redis.core.RedisConnectionUtils : Fetching Redis Connection from RedisConnectionFactory2024-04-02 09:16:15.035 DEBUG 1655457 --- [nio-8080-exec-3] o.s.d.redis.core.RedisConnectionUtils : Closing Redis Connection.2024-04-02 09:16:15.036 DEBUG 1655457 --- [nio-8080-exec-3] o.s.d.redis.core.RedisConnectionUtils : Fetching Redis Connection from RedisConnectionFactory2024-04-02 09:16:15.127 DEBUG 1655457 --- [nio-8080-exec-3] o.s.d.redis.core.RedisConnectionUtils : Closing Redis Connection.
How to make connection keep alive ? Here is my config:
@Bean public RedisConnectionFactory redisConnectionFactory() { RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(); redisStandaloneConfiguration.setHostName(redisHost); redisStandaloneConfiguration.setPort(redisPort); redisStandaloneConfiguration.setPassword(redisPassword); redisStandaloneConfiguration.setDatabase(redisDbName); LettuceClientConfiguration.LettuceClientConfigurationBuilder builder = LettuceClientConfiguration.builder(); builder.clientOptions(ClientOptions.builder().autoReconnect(true) .socketOptions(SocketOptions.builder().keepAlive(true).build()) .build()).useSsl(); return new LettuceConnectionFactory(redisStandaloneConfiguration, builder.build()); } @Bean public RedisTemplate<String, Object> redisTemplate() { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(redisConnectionFactory()); redisTemplate.setDefaultSerializer(new GenericJackson2JsonRedisSerializer(objectMapper)); return redisTemplate; }
I found the KeepAlive setting in the socket options, but it didn't help. .socketOptions(SocketOptions.builder().keepAlive(true).build())