我们正在使用@Cacheable和@CacheEvict来实现缓存。
问题是,构建缓存需要3分钟以上的时间。根据应用程序逻辑,首先将清除缓存,然后再创建缓存。在这期间,如果有任何用户访问我们的应用程序,则由于仍在构建缓存,因此应用程序无法发送数据。
有没有什么弹簧方法可以首先构建缓存,然后用新的缓存(@CachePut除外)替换旧的缓存。
谢谢, 斯里坎特。
答案 0 :(得分:0)
为什么不调用@Cachevict内部以@Cacheable注释的方法。因为清除缓存后会调用@Cacheabe方法并在那个时间间隔内加载数据?但这对内存缓存来说不是一个好习惯,因为缓存应基于请求。
@Cacheable(cacheNames = "***", key = "#CACHE_KEY")
public void doStuff(){
}
@Schedule(cron = "${your time}")
@Cachevict
public void clearCache(){
log("Cache evicting");
doStuff();
}