【问题标题】:Spring boot cache evict after cache built缓存构建后 Spring Boot 缓存驱逐
【发布时间】:2018-12-16 16:45:59
【问题描述】:

我们使用@Cacheable 和@CacheEvict 来实现缓存。

问题是,构建缓存需要 3 多分钟。根据应用程序逻辑,缓存首先被清除,然后被创建。如果任何用户访问我们的应用程序,应用程序将无法发送数据,因为缓存仍在构建中。

有没有什么spring方式先构建缓存,然后用新缓存替换旧缓存(@CachePut除外)。

谢谢, 斯里坎特。

【问题讨论】:

  • 也许你应该在这里添加一些代码,因为我知道即使没有构建缓存,@cacheable 的方法也可以正常运行。我想知道为什么您的应用程序无法发送数据
  • 感谢您的回复。我想添加一些编码,但没有得到。我的场景是先构建缓存,然后用现有的缓存替换。 @Cacheable 可以做到这一点吗?
  • 我仍然没有得到你期望缓存做的事情,我不确定你想要做什么。我们可以退后一步,更多地描述您的用例吗?您是说构建缓存需要“超过 3 分钟”。如果在此期间尝试访问数据会发生什么。你应该阻止吗?计算您已经在并行计算的数据?

标签: spring spring-boot caching spring-cache


【解决方案1】:

为什么不在@Cachevict 中调用带有@Cacheable 注释的方法。因为在清除缓存后你的@Cacheabe 方法被调用并在那个时间间隔内加载数据?但这对于内存缓存来说不是一个好习惯,因为缓存应该基于请求。

@Cacheable(cacheNames = "***", key = "#CACHE_KEY")
public void doStuff(){

}

@Schedule(cron = "${your time}")
@Cachevict
 public void clearCache(){
    log("Cache evicting");
    doStuff();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-23
    • 2014-10-12
    • 2016-09-10
    • 2011-11-11
    • 2018-08-20
    • 1970-01-01
    • 2017-06-17
    • 2016-10-13
    相关资源
    最近更新 更多