Redis Initial Cache Configurations

송형근·2024년 9월 19일
0

TIL

목록 보기
39/43
post-thumbnail

프로젝트에서 Common Module에서 Default로 20분의 TTL로 캐시 설정된 상태

요구사항 추가

  • 비밀번호 초기화 난수의 경우 5분의 TTL을 가지고 레디스에 캐싱 되어야 함
    • 캐싱 설정 추가 필요

RedisCacheManager 설정

  • 하나의 Cache 설정을 할 때에는 cacheDefaults만 사용하면 되지만, 여러 CacheConfigurations를 사용해야 할 경우 withInitialCacheConfigurations(Map<String, RedisCacheConfiguration>) 을 추가하면 됨

요구사항 구현

  • Cache Name이 “Reset”인 경우 TTL을 5로 하는 Configuration 추가 필요
    @Bean
        public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
            RedisCacheConfiguration configuration = RedisCacheConfiguration
                    .defaultCacheConfig()
                    .disableCachingNullValues()
                    .entryTtl(Duration.ofSeconds(1200))
                    .computePrefixWith(CacheKeyPrefix.simple())
                    .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(RedisSerializer.java()));
    
    				// --------------- 새로 작성된 부분
            Map<String, RedisCacheConfiguration> customConfigurations = new HashMap<>();
    
            customConfigurations.put("Reset",
                    RedisCacheConfiguration
                            .defaultCacheConfig()
                            .disableCachingNullValues()
                            .entryTtl(Duration.ofMinutes(5))
                            .computePrefixWith(CacheKeyPrefix.simple())
                            .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(RedisSerializer.json())));
    				// ----------------
            return RedisCacheManager
                    .builder(redisConnectionFactory)
                    .cacheDefaults(configuration)
                    .withInitialCacheConfigurations(customConfigurations) // 설정 추가
                    .build();
        }

P.S.

  • RedisCacheManager에서 builder로 추가하는 부분들을 찾아보다가 withInitialCacheConfigurations는 빠르게 찾았으나, 이 설정이 맞는지 확신이 없어 찾아보느라 꽤 오랜 시간이 소요되었음.
profile
기록을 남겨보자

0개의 댓글