繁体   English   中英

Spring Boot @Cacheble与Ehc​​ache

[英]Spring boot @Cacheble with Ehcache

我正在使用带有Ehcache的Spring boot在应用程序中缓存一些数据。 该应用程序是一个REST服务,用于缓存一些高使用率的数据。

我们控制器中的代码如下:

@Cacheable("CategoryModels")
  @GetMapping("/category/{companyId}")
  public List<CategoryViewModel> getAllCategories(@PathVariable(value = "companyId", required = true) long companyId,
    @RequestHeader("user") String user) {
//custom code here
}

现在,在某些情况下,用户正在从服务器获取不同的数据集。 在上述情况下有人可以解释吗?

如果数据库中的数据发生更改,我将刷新缓存,程序将自动将更新后的数据更新为

为了刷新缓存,我使用了一种自定义的书面方法:

Cache categoryCache = (Cache) manager.getCache("CategoryModels").getNativeCache();
categoryCache.removeAll();
categoryController.getAllCategories(company.getCompanyId(), null);

我对其他使用和刷新上述缓存的方式使用和刷新的缓存具有相同的行为。

您应该尝试通过以下方式参数化缓存定义:

@Cacheable(value="CategoryModels", key="{ #root.methodName, #companyId, #user.id }")

这可能是两件事。 首先,spring提供的默认密钥解析器除了参数名称外不考虑其他任何内容。 解决这个问题的最干净的方法是编写同时考虑类和方法的自己的密钥左轮手枪,否则,可能会从碰巧共享同一参数列表的完全不同的方法中获取数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM