我使用@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秒。
发布于 2019-06-20 03:33:26
你不能@Cacheable是静态配置,你想要的是更多的动态配置。请记住,Spring只提供了应该适合所有提供者的抽象。您应该为不同的条目指定不同的区域,或者执行一个后台进程来使需要失效的键无效。
在静态配置时,生存时间设置是基于每个区域的。
如果你离开静态配置,你可以在插入条目的同时设置过期时间,但是这样你就离开了spring(记住,一个大小适合所有人),进入缓存提供者的领域,它可以是任何Redis,Hazelcast,Ehcache,infinispan,每个都有不同的契约
以下是来自Hazelcast的IMap接口的合同示例:
IMap::put(Key, Value, TTL, TimeUnit)
但这与春天没有任何关系。
使用Spring意味着您可以执行以下操作:
@Cacheable(name="floatingRates")
List<Rate> floatingRates;
@Cacheable(name="fixedRates")
List<Rate> fixedRates;
然后为每一个定义TTL。
https://stackoverflow.com/questions/56659771
复制相似问题