Intro::
lettuce pool 설정에 대한 정리본입니다.
lettuce 특징
레터스는 레디스 서버와 단일 커넥션으로 멀티 스레드 요청에 대해 처리가 가능합니다. 물론 내부적으로 논-블럭킹 + 비동기로 구현되어 있으며 스레드 세이프합니다. 레디스 서버가 어차피 싱글 스레드 기반이기 때문에 어차피 다중 커넥션이 단일 커넥션에 비해 성능상 이점이 있는 것도 아닙니다. 따라서 레터스를 사용한다면 굳이 커넥션 풀을 만들지 않고 단일 커넥션을 공유하도록 하는 것이 좋습니다.
설정 과정
@Configuration public class RedisConfig { @Value("${spring.data.redis.instances.primary.host}") private String primaryHost; @Value("${spring.data.redis.instances.primary.port}") private int primaryPort; @Value("${spring.data.redis.instances.primary.password}") private String primaryPassword; @Value("${spring.data.redis.instances.primary.timeout.command}") private Duration primaryCommandTimeout; @Value("${spring.data.redis.instances.primary.timeout.shutdown}") private Duration primaryShutdownTimeout; @Value("${spring.data.redis.instances.primary.pool.max-active}") private int primaryMaxActive; @Value("${spring.data.redis.instances.primary.pool.min-idle}") private int primaryMinIdle; @Bean public RedisConnectionFactory redisSingleConnectionFactory() { RedisStandaloneConfiguration redisConfig = new RedisStandaloneConfiguration(); redisConfig.setHostName(primaryHost); redisConfig.setPassword(primaryPassword); redisConfig.setPort(primaryPort); GenericObjectPoolConfig<Object> poolConfig = new GenericObjectPoolConfig<>(); poolConfig.setMaxTotal(primaryMaxActive); poolConfig.setMinIdle(primaryMinIdle); LettucePoolingClientConfiguration lettuceConfig = customLettucePoolingConfig(primaryCommandTimeout, primaryShutdownTimeout, poolConfig); return new LettuceConnectionFactory(redisConfig, lettuceConfig); } private LettucePoolingClientConfiguration customLettucePoolingConfig(Duration commandTimeout, Duration shutdownTimeout, GenericObjectPoolConfig<Object> poolConfig) { return LettucePoolingClientConfiguration.builder() .commandTimeout(commandTimeout) .shutdownTimeout(shutdownTimeout) .poolConfig(poolConfig) .build(); } }
Loading Comments...