Java 我可以为@Cacheable by key设置TTL吗?
我使用Java 我可以为@Cacheable by key设置TTL吗?,java,spring,caching,redis,configuration,Java,Spring,Caching,Redis,Configuration,我使用@Cacheable(name=“rates”,key=“#car.name”) 我可以为此缓存设置TTL吗?TTL是按车来的,你叫什么名字 比如说 我想设置name=“rates”TTL 60秒 运行java: 时间:0 car.name=1,返回“11” 时间:30 car.name=2,返回“22” 时间:60 car.name=1把钥匙应该没了。 时间:90 car.name=2钥匙应该没了 我想为多个名称设置多个TTL name=“rates2”TTL 90秒。您不能@Cache
@Cacheable(name=“rates”,key=“#car.name”)
我可以为此缓存设置TTL吗?TTL是按车来的,你叫什么名字
比如说
我想设置name=“rates”
TTL 60秒
运行java:
时间:0 car.name=1,返回“11”
时间:30 car.name=2,返回“22”
时间:60 car.name=1把钥匙应该没了。时间:90 car.name=2钥匙应该没了 我想为多个名称设置多个TTL
name=“rates2”
TTL 90秒。您不能@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;
@Cacheable(name=“floatingRates”)
列出忘恩负义者;
@可缓存(name=“fixedRates”)
列出固定利率;
然后为每个定义TTL