首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >@Cacheable可以通过key设置TTL吗?

@Cacheable可以通过key设置TTL吗?
EN

Stack Overflow用户
提问于 2019-06-19 11:46:17
回答 1查看 356关注 0票数 2

我使用@Cacheable(name = "rates", key = "#car.name")

我可以为此缓存设置TTL吗?TTL是在car.name旁边吗?

例如

我想设置运行java的name = "rates" TTL 60秒:

时间:0 car.name = 1,返回"11“时间: 30 car.name = 2,返回"22”

时间: 60 car.name =1密钥应该消失。

时间: 90 car.name =2密钥应该消失。

我想为多个名字设置多个TTL。

name = "rates2" TTL 90秒。

EN

回答 1

Stack Overflow用户

发布于 2019-06-20 03:33:26

你不能@Cacheable是静态配置,你想要的是更多的动态配置。请记住,Spring只提供了应该适合所有提供者的抽象。您应该为不同的条目指定不同的区域,或者执行一个后台进程来使需要失效的键无效。

在静态配置时,生存时间设置是基于每个区域的。

如果你离开静态配置,你可以在插入条目的同时设置过期时间,但是这样你就离开了spring(记住,一个大小适合所有人),进入缓存提供者的领域,它可以是任何Redis,Hazelcast,Ehcache,infinispan,每个都有不同的契约

以下是来自Hazelcast的IMap接口的合同示例:

代码语言:javascript
复制
IMap::put(Key, Value, TTL, TimeUnit) 

但这与春天没有任何关系。

使用Spring意味着您可以执行以下操作:

代码语言:javascript
复制
    @Cacheable(name="floatingRates")
List<Rate> floatingRates;
    @Cacheable(name="fixedRates")
List<Rate> fixedRates;

然后为每一个定义TTL。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56659771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档