我们使用@Cacheable和@CacheEvict进行缓存实现。
问题是,构建缓存需要3分钟以上。根据应用程序逻辑,首先清除缓存然后创建。在任何用户访问我们的应用程序之间,应用程序无法在缓存仍在构建时发送数据。
是否有任何弹簧方式首先构建缓存,然后用新缓存替换旧缓存(除了@CachePut)。
谢谢,Srikanth。
为什么不在@Cachevict中调用@Cacheable分配的方法。因为在清除缓存后你的@Cacheabe方法被调用并在那个时间间隔内加载数据?但是这对于内存缓存来说不是一个好习惯,因为缓存应该基于请求。
@Cacheable(cacheNames = "***", key = "#CACHE_KEY")
public void doStuff(){
}
@Schedule(cron = "${your time}")
@Cachevict
public void clearCache(){
log("Cache evicting");
doStuff();
}