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()”方法,它将准确返回您询问的大小。