2014-01-21 16 views
1

是否可以配置或擴展ehCache以滿足以下要求?ehCache在超時和成功刷新時逐出

  1. 緩存具有生存時間的元素。
  2. 當從緩存和生活已經超過了時間要求的元素,試圖刷新值,但是如果看看了失敗使用前值

其中第一項是相當明顯的,但我沒有看到滿足第二個條件的方法。

回答

1

不是沒有重寫Cache.searchInStoreWith/WithoutStats方法。事情是,目前它的實施方式是,首先將元素從底層存儲中逐出,然後,如果已配置,則調用CacheListener,即使只傳遞了密鑰,而不是該值。
當然,可以配置CacheWriter並且不驅逐過期的元素(甚至更新它們),但不覆蓋Chache.get,你的調用仍然會返回null。所以它有可能破解並獲得過期元素
儘管對我來說似乎很容易改變實現,以便過期元素不會被驅逐,而是可以調用CacheLoaded。我打算做異步的事情,因爲我的狀態比陳舊的數據更好,而不是等待SOR的響應時間太長,或者如果SOR不可達,根本就沒有數據。
看起來像類似的東西是implemented以符合JSR 107,但它不區分不存在和過期的元素,並且如果查找失敗 - 過期的元素不見了。

+0

感謝您的全面回覆,這是我懷疑的。我會看看你的建議,但最好這只是一個配置選項。也許這是添加到ehcache請求列表中的一個。 – Ellis