簡體   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