有没有办法通过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