[REDIS] springboot2.0에서 @cacheable 사용하는 경우 어떻게 각 레디 스 캐시에 대해 다른 TTL을 구성 할 수
REDISspringboot2.0에서 @cacheable 사용하는 경우 어떻게 각 레디 스 캐시에 대해 다른 TTL을 구성 할 수
나는 레디 스에 springboot2.0에 @cacheable을 사용하고 있습니다. 나는 다음과 같이 RedisCacheManager를 구성한 :
@Bean
public RedisCacheManager redisCacheManager(RedisConnectionFactory connectionFactory) {
RedisCacheWriter redisCacheWriter = RedisCacheWriter.lockingRedisCacheWriter(connectionFactory);
SerializationPair<Object> valueSerializationPair = RedisSerializationContext.SerializationPair
.fromSerializer(new GenericJackson2JsonRedisSerializer());
RedisCacheConfiguration cacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();
cacheConfiguration = cacheConfiguration.serializeValuesWith(valueSerializationPair);
cacheConfiguration = cacheConfiguration.prefixKeysWith("myPrefix");
cacheConfiguration = cacheConfiguration.entryTtl(Duration.ofSeconds(30));
RedisCacheManager redisCacheManager = new RedisCacheManager(redisCacheWriter, cacheConfiguration);
return redisCacheManager;
}
하지만이 모든 키의 TTL 30초, 어떻게 다른 cachename 각 레디 스 캐시에 대해 다른 TTL을 구성 할 수 있도록?
해결법
-
==============================
1.각 캐시에 대해 서로 다른 구성을 생성하여 하나의 CacheManager를 사용하여 서로 다른 각각의 캐시 시간이 만료 구성하고 CacheManager를 만들 수있는지도에 넣을 수 있습니다.
각 캐시에 대해 서로 다른 구성을 생성하여 하나의 CacheManager를 사용하여 서로 다른 각각의 캐시 시간이 만료 구성하고 CacheManager를 만들 수있는지도에 넣을 수 있습니다.
예를 들면 :
@Bean RedisCacheWriter redisCacheWriter() { return RedisCacheWriter.lockingRedisCacheWriter(jedisConnectionFactory()); } @Bean RedisCacheConfiguration defaultRedisCacheConfiguration() { return RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(defaultCacheExpiration)); } @Bean CacheManager cacheManager() { Map<String, RedisCacheConfiguration> cacheNamesConfigurationMap = new HashMap<>(); cacheNamesConfigurationMap.put("cacheName1", RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(ttl1))); cacheNamesConfigurationMap.put("cacheName2", RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(ttl2))); cacheNamesConfigurationMap.put("cacheName3", RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofSeconds(ttl3))); return new RedisCacheManager(redisCacheWriter(), defaultRedisCacheConfiguration(), cacheNamesConfigurationMap); }
-
==============================
2.서로 다른 구성이 필요한 경우 @cacheable를 사용하는 경우 캐시 시간이 만료, 당신은 다른 TTL과 다른 CacheManager를 구성하고, 서비스의 캐시를 사용하는 경우 cacheManager를 지정할 수 있습니다.
서로 다른 구성이 필요한 경우 @cacheable를 사용하는 경우 캐시 시간이 만료, 당신은 다른 TTL과 다른 CacheManager를 구성하고, 서비스의 캐시를 사용하는 경우 cacheManager를 지정할 수 있습니다.
@Cacheable(cacheManager = "expireOneHour", value = "onehour", key = "'_onehour_'+#key", sync = true)
from https://stackoverflow.com/questions/51054774/how-to-configure-different-ttl-for-each-redis-cache-when-using-cacheable-in-spr by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] blpop 잠시 후 처리 큐 정지 (0) | 2020.01.25 |
---|---|
[REDIS] 레디 스 + 도커 + 장고 - 오류 111 연결 거부 (0) | 2020.01.24 |
[REDIS] 스프링 데이터 레디 스 마스터 슬레이브 구성 (0) | 2020.01.24 |
[REDIS] 레디 스와 Node.js를 : 동기 또는 비동기? (0) | 2020.01.24 |
[REDIS] StackExchange TimeoutException는 레디 스에서 2 개 세트에 750 개 항목을 삽입 할 때 (0) | 2020.01.24 |