排定春季缓存驱逐?
是否有可能安排春季缓存驱逐到午夜每天?排定春季缓存驱逐?
我读过Springs Cache Docs,没有发现关于预定缓存逐出的内容。
我需要逐日驱逐缓存,并在应用程序之外发生某些更改时重新缓存缓存。
尝试使用@Scheduled 例子:
@Scheduled(fixedRate = ONE_DAY)
@CacheEvict(value = { CACHE_NAME })
public void clearCache() {
}
您也可以使用cron表达@Scheduled。
弹簧缓存框架是事件驱动的,即仅当调用各个方法时才会触发@Cacheable
或@CacheEvict
。
但是,您可以利用底层缓存提供程序(记住Spring缓存框架仅仅是一个抽象,并不提供缓存解决方案本身)使缓存本身无效。例如EhCache有一个属性即。 timeToLiveSeconds
决定了直到缓存处于活动状态的时间。但是,除非调用了@Cacheable
带注释的方法,否则这不会为您重新填充缓存。
所以对于高速缓存收回并重新人口在特定时刻(说午夜提到)考虑实施在春季背景scheduled service根据需要将触发高速缓存收回并重新人口。预期的行为不是开箱即用的。
希望这会有所帮助。
明天早上我会试一试,并告诉你结果。 –
分享这个方法是否奏效.. –
我有一些其他事情的优先次序,我现在再次讨论这个用例。回复晚了非常抱歉。我马上回来给你答案! –
Scheduled注解如何将自身绑定到CacheEvict注释以了解它应该做什么? –
'@Scheduled'调用方法clearCache指定的时间。 缓存被清理,因为该方法由CacheEvict触发。 请记得在类配置中包含配置@EnableScheduling。 –