我正在緩存以異步方式發送到我的組件的對象。換句話說,這些對象到達的順序是不可預知的。爲了避免任何問題,我在我的對象中包含了一個版本屬性(基本上是一個時間戳)。這個想法是,任何到達的版本比已經被緩存的版本早,它可以被丟棄。如何在EHCache實例中使用元素版本控制?
EHCache的「Element」類(包裝EHCache中的對象)似乎有助於實現這一點:除了鍵和值之外,構造函數可以採用(基於長的)版本。我無法按照我預期的方式開展工作。下面的代碼片段演示了我的問題(使用的EHCache 2.1.1):
public static void main(String[] args) {
final CacheManager manager = CacheManager.create();
final Cache testCache = new Cache(new CacheConfiguration("test", 40));
manager.addCache(testCache);
final String key = "key";
final Element elNew = new Element(key, "NEW", 2L);
testCache.put(elNew);
final Element elOld = new Element(key, "OLD", 1L);
testCache.put(elOld);
System.out.println("Cache content:");
for (Object k : testCache.getKeys()) {
System.out.println(testCache.get(k));
}
}
我希望上面的代碼,以使緩存值是「新」,而是「舊」被打印出來。如果您按插入元素的順序玩一下,您會發現插入的最後一個元素將保留在緩存中。版本控制似乎被忽略。
我沒有正確使用版本控制功能,或者它可能不是用於此目的?任何人都可以推薦替代品