EntryProcessor和keySet(谓词)

时间:2015-10-06 13:41:35

标签: java hazelcast distributed-caching distributed-cache hazelcast-imap

我有一个定义如下的淡褐色地图,它存储大约。 100万条目。

IMap<Integer, Employee> employeeMap = hazelcastInstance.getMap("employeeMap");

employeeObj.isCool()返回给定员工是否“冷静”。

我需要一种机制来从employeeMap 中找到所有很酷的员工。我知道我可以做以下其中一项。

选项1 :调用employeeMap.keySet(predicate);,它将在群集中的每个成员中并行执行,并由调用者使用fork / join机制加入。

问题1 :但是,我认为在将谓词应用于每个条目之前,这会将每个节点中的条目集一次性加载到内存中。请确认。

选项2 employeeMap.executeOnEntries(entryProcessor);其中,entryprocessor的process()方法如下所示。

@Override
public Object process(Entry<Integer, Employee> entry) 
{
    return entry.getValue().isBad() ? true : null;
}

问题2 :我了解EntryProcessor在分区线程中运行。我想知道它是否会在调用process()方法之前一次性加载(去除)本地节点中的所有本地条目(并临时存储)。

问题3 :我想知道可用的最佳选择(在时间和空间复杂性方面)及其背后的基本原理。

0 个答案:

没有答案