在 spring boot 中重新加载/刷新缓存

新手上路,请多包涵

我正在使用 Spring Boot 并使用 Ehcache 进行缓存。到目前为止一切正常。但是现在我必须重新加载/刷新,所以我该怎么做才能使我的应用程序不会有任何停机时间。

我在 Spring Ehcache 中尝试了很多方法,但它没有用,否则必须编写调度程序并重新加载数据。

 @Override
@Cacheable(value="partTypeCache", key="#partKey")
public List<PartType> loadPartType(String partKey) throws CustomException {
        return productIdentityDao.loadPartType();
}

原文由 Shubuu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 634
1 个回答

显然关于你的问题的所有评论都是正确的。你 应该 使用 CacheEvict。我在这里找到了解决方案: https ://www.baeldung.com/spring-boot-evict-cache,它看起来像这样:

您所要做的就是创建名为例如 CacheService 的类,并创建将驱逐您拥有的所有缓存对象的方法。然后你注释该方法 @Scheduled 并输入你的间隔率。

 @Service
public class CacheService {

    @Autowired
    CacheManager cacheManager;

    public void evictAllCaches() {
        cacheManager.getCacheNames().stream()
          .forEach(cacheName -> cacheManager.getCache(cacheName).clear());
    }

    @Scheduled(fixedRate = 6000)
    public void evictAllcachesAtIntervals() {
        evictAllCaches();
    }

}

原文由 J.Kennsy 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题