我们使用@Cacheable和@CacheEvict进行缓存实现 .
问题是,构建缓存需要3分钟以上 . 根据应用程序逻辑,首先清除缓存然后创建 . 在任何用户访问我们的应用程序之间,应用程序无法在缓存仍在构建时发送数据 .
是否有任何 spring 方式首先构建缓存,然后用新缓存替换旧缓存(除了@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(); }
1 回答
为什么不在@Cachevict中调用@Cacheable分配的方法 . 因为在清除缓存后你的@Cacheabe方法被调用并在那个时间间隔内加载数据?但是这对于内存缓存来说不是一个好习惯,因为缓存应该基于请求 .