我的用例是我需要在服務之上實現一個緩存,應該在一段時間後(從創建時起)使條目到期。是否有第三方Java緩存提供對過期事件的控制?
如果該條目已過期,則應該查找服務以獲取最新條目。讓電話服務更新。
但是,可以說如果服務刷新失敗,那麼我應該能夠使用緩存中陳舊的數據。
但由於緩存已過期,因此我沒有該條目。
所以,我想控制緩存的到期和緩存條目只有在服務可用來獲取最新數據時纔會過期,否則不要刪除該條目。
我正在查看Google Guava緩存,但它只提供了一個只會通知事件的removeListener,但我無法用此控制到期事件。
是否有任何第三方緩存實現可以達到我的目的?
這聽起來像你不想過期,但'refreshAfterWrite',因爲你不想刪除一個條目(只更新它的值)。 –
** refreshAfterWrite **在給定的持續時間或整個緩存之後只更新一個條目嗎? 如果刷新時拋出任何異常,那麼以前的條目會保留原樣還是會拋出異常? 而我檢查,它需要重寫reload()方法異步。你能解釋我爲什麼異步嗎? –
它是每個條目,重新加載時返回上一個值,並在第一個調用者的線程上執行,或者可以完全異步。如果你想要一個完整的週期性刷新,最簡單的方法就是使用'ScheduledExecutorService'來代替。 –