RedisCacheConfiguration

PUROMANGA·2025년 5월 22일

기술스택

목록 보기
5/22

개요

        Map<String, RedisCacheConfiguration> redisCacheConfigMap
                = new HashMap<>();

이러한 맵을 우리는 redisCacheManager에서 만들어줄 것이다.

이때 여기 value로 들어가는 RedisCacheConfiguration는 Spring이 Redis 캐시를 사용할 때
각 캐시마다 어떤 방식으로 저장하고, 직렬화하고, TTL을 설정할지 정의해놓은 설정 객체이다.

✅ 실무에서 자주 쓰는 메소드 Top 7

메소드역할자주 쓰는 이유
entryTtl(Duration ttl)캐시 유효 시간(TTL) 설정캐시 만료 설정은 거의 필수
disableCachingNullValues()null 값을 캐시하지 않도록 설정의미 없는 데이터 낭비 방지
serializeValuesWith(...)Value 직렬화 방식 지정JSON, JDK 등 직렬화 전략 지정
serializeKeysWith(...)Key 직렬화 방식 지정Key를 사람이 읽을 수 있게 설정
prefixCacheNameWith(String prefix)Key prefix 지정Redis에서 키 구분 및 관리 용이
disableKeyPrefix()prefix 사용 안 함prefix 없이 raw 키를 그대로 저장하고 싶을 때
enableTimeToIdle()사용 안 하면 TTL만큼 유지, 사용하면 마지막 접근 기준 TTL 리셋LRU 캐시처럼 동작 가능 (예외적 상황)

설정 예시

RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
    .entryTtl(Duration.ofMinutes(10))                             // TTL 설정
    .disableCachingNullValues()                                   // null 저장 방지
    .serializeValuesWith(RedisSerializationContext.SerializationPair
        .fromSerializer(new GenericJackson2JsonRedisSerializer())) // Value 직렬화
    .serializeKeysWith(RedisSerializationContext.SerializationPair
        .fromSerializer(new StringRedisSerializer()))             // Key 직렬화
    .prefixCacheNameWith("myApp::");                              // 키 앞에 접두사 붙이기

CacheConfig 예시

public class CacheConfig {

    @Bean
    public RedisCacheManager redisCacheManager(RedisConnectionFactory connectionFactory) {
        RedisCacheConfiguration defaultConfig = RedisCacheConfiguration
                .defaultCacheConfig()
                .disableCachingNullValues()
                .serializeValuesWith(RedisSerializationContext.SerializationPair
                        .fromSerializer(new GenericJackson2JsonRedisSerializer()));


        //저장할 캐시의 이름?구조
        Map<String, RedisCacheConfiguration> redisCacheConfigMap
                = new HashMap<>();
        
        //캐시의 이름과 시간을 정해줌, 추가적인 직렬화 방식을 선택하고 싶으면 jdk를 context로 설정할 것
        redisCacheConfigMap.put("PopularProduct", defaultConfig.entryTtl(Duration.ofHours(1)));

        return RedisCacheManager.builder(connectionFactory)
                .withInitialCacheConfigurations(redisCacheConfigMap)
                .build();
    }
}

0개의 댓글