Caching 如何为整个GridGain集群获取keySet()和size()?

Caching 如何为整个GridGain集群获取keySet()和size()?,caching,cluster-computing,gridgain,Caching,Cluster Computing,Gridgain,GridCache.keySet()、.primarySize()和.size()仅返回该节点的信息 除了整个集群,我如何获取这些信息 “有效”,但我所需要的是键或计数,而不是值 问题是,如果我想基于索引字段进行查找,SQL查询可以工作,但无法基于网格缓存条目键本身进行查找 我的工作环境很有效,但远没有优雅和性能: Set<String> ruleIds = FluentIterable.from(cache.queries().createSqlFieldsQuery("SELEC

GridCache.keySet()
.primarySize()
.size()
仅返回该节点的信息

除了整个集群,我如何获取这些信息

“有效”,但我所需要的是键或计数,而不是值

问题是,如果我想基于索引字段进行查找,SQL查询可以工作,但无法基于网格缓存条目键本身进行查找

我的工作环境很有效,但远没有优雅和性能:

Set<String> ruleIds = FluentIterable.from(cache.queries().createSqlFieldsQuery("SELECT property FROM YagoRule").execute().get())
        .<String>transform((it) -> (String) it.iterator().next()).toSet();
Set ruleIds=FluentIterable.from(cache.querys().createSqlFieldsQuery(“从YagoRule中选择属性”).execute().get())
.transform((it)->(String)it.iterator().next()).toSet();
这要求键与字段中的一个键相同,并且出于性能原因需要对字段进行索引。

GridGain(6.2.0)的下一版本将有
globalSize()
globalPrimarySize()
方法,这些方法将询问集群的大小

目前,您可以使用以下代码:

// Only grab nodes on which cache "mycache" is started.
GridCompute compute = grid.forCache("mycache").compute();

Collection<Integer> res = compute.broadcast(
    // This code will execute on every caching node.
    new GridCallable<Integer>() {
         @Override public Integer call() {
             return grid.cache("mycache").size();
         }
    }
).get();

int sum = 0;

for (Integer i : res)
    sum += i;
//仅抓取启动缓存“mycache”的节点。
GridCompute=grid.forCache(“mycache”).compute();
Collection res=compute.broadcast(
//此代码将在每个缓存节点上执行。
新的GridCallable(){
@重写公共整数调用(){
返回grid.cache(“mycache”).size();
}
}
).get();
整数和=0;
for(整数i:res)
总和+=i;
globalKeySet()
怎么样?顺便说一句,我认为上面的代码片段是所有大小的总和(忽略交点),而不是所有条目的总大小。i、 e.节点1具有键A、B、C,而节点2具有键B、C、D。尽管预期大小为4,但代码段将返回6。但是如果这在6.2.0中得到了修复,那么我很高兴:)@HendyIrawan而不是“size()”方法,在上面的示例中,您应该使用“primarySize()”方法,它将准确返回您询问的大小。