Привет, если вы хотите использовать только аннотации Spring, один из способов сделать это заключается в следующем.
@CacheConfig
аннотация позволяет вам определять конкретный CacheManager для дальнейшего использования, аннотация @Cacheable
также позволяет определять cacheManager
@CacheConfig(cacheNames="myCacheName",cacheManager="timeoutCacheManager")
class ProductReader {
@Cacheable(value = "myCacheName", keyGenerator = "myKeyGenerator")
public Product getProduct(ProductRequest request) {
// ...
}
}
@Bean
public CacheManager timeoutCacheManager(RedisTemplate redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
cacheManager.setDefaultExpiration(mytimeToLive);
return cacheManager;
}
Вот также фрагмент более обширной конфигурации кэша, который снова приводит к CacheManager. На этот раз он настраивает несколько регионов:
@Bean (name="cacheManager")
public RedisCacheManager cacheManager(RedisConnectionFactory connectionFactory) {
RedisCacheConfiguration conf_ready_info = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofMillis(50000));
RedisCacheConfiguration conf_base_info = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ofMillis(60000));
Map<String, RedisCacheConfiguration> cacheConfigurations = new HashMap<String, RedisCacheConfiguration>();
cacheConfigurations.put("base_info", conf_base_info);
cacheConfigurations.put("ready_info", conf_ready_info);
return RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(connectionFactory)
.withInitialCacheConfigurations(cacheConfigurations).build();
}
Я взял последний пример из:
установить ключ истечения в определенное время при использовании Spring кэширования с Redis
Использование только @Cacheable(value = "myCacheName", keyGenerator = "timeoutCacheManager")