【发布时间】:2019-10-27 02:29:33
【问题描述】:
我有一组看起来有点像这样的缓存方法:
@Cacheable(value = "myCacheName", keyGenerator = "myKeyGenerator")
public Product getProduct(ProductRequest request) {
// ...
}
而且我需要为这些方法返回的对象设置不同的生存时间(过期间隔)。
问题: 根据the documentation,提供的方法是在方法的返回类型上使用@RedisHash(timeToLive=…) 或@TimeToLive 注释。但是,我不想用缓存相关的逻辑污染我的域类。此外,我的一些方法返回了我无法修改的类的字符串或对象。我宁愿以更可配置的方式实现它。还有一个名为 spring.cache.redis.time-to-live 的配置属性,但它在所有地方应用相同的生存时间。
问题:有没有办法在方法级别指定生存时间/到期间隔?或者一般来说,如何以更优雅的方式实现它?
【问题讨论】:
-
如果缓存名称有限,可以通过配置
CacheManagerbean为每个缓存名称设置TTL。如果 SDR 允许将 TTL 配置为@Cacheable的属性,那就太好了 -
@MạnhQuyếtNguyễn 我的缓存名称确实有限。能否请您详细说明解决方案。
-
@OleksandrShpota 你可以看看this。这个想法是为不同的缓存管理器配置不同的 TTL。
标签: java spring spring-boot redis spring-data-redis