2010-05-10 88 views
1

有沒有在Ehcache中指定數據刷新策略?我目前正在將應用程序從OSCache遷移到Ehcache,除了設置timeToIdletimeToLive之外,我似乎找不到任何指定元素何時需要刷新的方法。在Ehcache中設置刷新策略

我想要的是:在訪問緩存中的元素時,請檢查它的關聯資源以查看它是否比緩存元素的lastUpdateTime更新。如果是,刷新緩存;否則提供緩存中的內容。

在OSCache中,這是通過捕獲NeedsRefreshException併爲元素設置自定義刷新策略完成的。我一直在研究文檔一段時間,但是我無法找到任何方法或例子來說明我在Ehcache中如何實現這一點。

任何幫助將不勝感激:)。

亞歷

回答

1

NeedsRefreshException的OSCache的的想法實在是有缺陷的。首先,這違背了對通常執行流程使用異常的建議(是的,我認爲過時的緩存命中爲正常流程);其次爲此創建例外非常昂貴。

現在回到你的問題。如果我在你的鞋子裏,我會評估擴展net.sf.ehcache.Element的可能性,或者將你的輸入值打包成能夠檢查timeToLive的對象。

但主要問題是,爲什麼你需要這樣做?如果將對象放入緩存並指定TTL,爲什麼還要檢查檢索時的TTL?緩存應該能夠在沒有任何外部幫助的情況下驅逐對象。同樣適用於手動刪除條目的情況(例如,當對象已更改時)。也許我在這裏失去了一些東西?

您所要求的功能稱爲通讀功能。如何做到這一點在這裏解釋:http://ehcache.org/documentation/concepts.html#read-through

-
另一個不高興OSCache的用戶等待遷移到的EHCache :(