有沒有辦法通過load導入地圖條目custom TTL使用MapStore
?Hazelcast MapStore通過TTL加載
使用案例:我的每個映射條目都有一個自定義過期,此時條目不再有效(TTL不僅限制內存映射的大小,並且TTL應用於每個條目,而不是地圖配置)。當我初始地址爲put時,我設置了此TTL,過期時間保留在我的基礎持久性映射數據存儲中,但從數據庫加載我的條目時無法重置此TTL。
public class MyMapStore implements MapStore<MayKey, MapValue> {
@Override
public MapValue load(MayKey key) {
MapValue value = datstore.lookup(key);
Date ttl = value.getExpiration();
// the value has it's own entry-specific TTL, but it seems this can't be used from the MapStore
return value;
}
// . . .
}
的MapLoader
文檔似乎表明這是不可能的:
加載項將被放入分佈圖,他們將 留在內存中,直到它們被顯式刪除或隱含逐出 (如果配置驅逐)。
如果沒有辦法用MapStore
做到這一點,一些剩餘的選項似乎是:
- 不要使用
MapStore
,而是明確地查找條目從我 持久數據存儲,裝載與這些值所需的TTL- 這可能是可行的,但這種做法,我不再能夠採取的
MapStore
好處 優勢
- 這可能是可行的,但這種做法,我不再能夠採取的
- 運行一個後臺線程週期性明確驅逐這些過期的條目,而不是依賴於Hazelcast的自動驅逐
- 這僅僅是一個很大的開銷(附加線程,查詢和錄入處理),並要求我的應用程序代碼檢查條目的有效性在使用之前(因爲在地圖中可能存在過期的條目)
是否有任何其他方式來完成這項乾淨/輕鬆地與Hazelcast是我俯瞰?
是的,這正是我使用當我第一次把項目到地圖,但問題是,加載與MapStore條目時,我不能用這種方法。 – shelley