스프링 프레임워크

springboot에 redisson cache 적용하기

blogger903 2024. 6. 18. 16:38
728x90

이번 포스트에서는 springboot에 redisson으로 global 캐시를 구성합니다

 

환경

  • springboot 3.1.10
  • gradle 8.7
  • java 17

의존성을 추가해줍니다

implementation 'org.redisson:redisson-spring-data-30:3.31.0'

 

application.yml 에 설정값을 추가해줍니다

redis:
  redisson:
    config: |
      clusterServersConfig:
        idleConnectionTimeout: 10000
        connectTimeout: 10000
        timeout: 3000
        retryAttempts: 3
        retryInterval: 1500
        failedSlaveReconnectionInterval: 3000
        failedSlaveCheckInterval: 60000
        password: null
        subscriptionsPerConnection: 5
        clientName: null
        loadBalancer: !<org.redisson.connection.balancer.RoundRobinLoadBalancer> {}
        subscriptionConnectionMinimumIdleSize: 1
        subscriptionConnectionPoolSize: 50
        slaveConnectionMinimumIdleSize: 24
        slaveConnectionPoolSize: 64
        masterConnectionMinimumIdleSize: 24
        masterConnectionPoolSize: 64
        readMode: "SLAVE"
        subscriptionMode: "SLAVE"
        nodeAddresses:
        - "redis://127.0.0.1:6380"
        - "redis://127.0.0.1:6381"
        - "redis://127.0.0.1:6382"
        scanInterval: 1000
        pingConnectionInterval: 0
        keepAlive: false
        tcpNoDelay: false
      threads: 16
      nettyThreads: 32
      codec: !<org.redisson.codec.Kryo5Codec> {}
      transportMode: "NIO"

 

Configuration 클래스를 추가합니다

@Configuration
public class RedissonSpringDataConfig {

    @Bean
    public RedissonConnectionFactory redissonConnectionFactory(RedissonClient redisson) {
        return new RedissonConnectionFactory(redisson);
    }

    @Bean(destroyMethod = "shutdown")
    public RedissonClient redisson(@Value("${spring.redis.redisson.config}") String configFile) throws IOException {
        Config config = Config.fromYAML(new ByteArrayInputStream(configFile.getBytes(StandardCharsets.UTF_8)));
        return Redisson.create(config);
    }

    @Bean
    public org.springframework.cache.CacheManager redissonCacheManager(RedissonClient redissonClient) {
        return new RedissonSpringCacheManager(redissonClient);
    }
}

 

참고링크:

redisson-spring-boot-starter

Integration-with-frameworks