[Redis] 5.Spring boot redis cache 설정
RedisCacheManager, RedisCacheConfiguration
캐쉬에 대한 설정을 유지하는 클래스. 실제 데이터에 대한 처리는 RedisCache가 담당
@EnableCaching
@Configuration
public class RedisCacheConfig {
@Bean
public RedisCacheManager redisCacheManager(RedisConnectionFactory connectionFactory) {
RedisCacheConfiguration configuration = RedisCacheConfiguration
.defaultCacheConfig()
.disableCachingNullValues()
.entryTtl(Duration.ofSeconds(10))
.computePrefixWith(CacheKeyPrefix.simple())
.serializeKeysWith(RedisSerializationContext.SerializationPair
.fromSerializer(new StringRedisSerializer()));
Map<String, RedisCacheConfiguration> cacheConfigurations = new HashMap<>();
cacheConfigurations.put("val", RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofSeconds(120)));
return RedisCacheManager.RedisCacheManagerBuilder
.fromConnectionFactory(connectionFactory)
.cacheDefaults(configuration)
.withInitialCacheConfigurations(cacheConfigurations)
.build();
}
}
RedisTemplate을 인자로 받아 인스턴스를 생성할 수 있지만 builder패턴을 이용해 RedisCacheConfiguration 인스턴스를 설정값으로 넘겨 줄 수 있다.
disableCachingNullValues() : null 값이 캐싱 되지 않도록 한다.
entryTtl() : 캐시 유효 기간
computePrefixWith(CacheKeyPrefix.simple()) : 캐시의 prefix를 설정 하며 기본 설정의 경우 {캐시 명}:{키 값}으로 서버에 저장하게 됩니다.
withInitialCacheConfigurations : 키 값에 따라 서로 다른 RedisCacheConfiguration을 사용 할 수 있다.
캐시를 사용 하는 곳에서 이렇게 사용하는데
@Cacheable(value = “이 키 값” key = “#id”, unless = “#result == null”)
value : key 의 형태로 서버에 저장한다.