Java ApacheIgnite:如何从命名缓存中获取所有项

Java ApacheIgnite:如何从命名缓存中获取所有项,java,ignite,Java,Ignite,我正在尝试从我的命名分区缓存中获取所有项。目前我正在使用 List<Cache.Entry<String, Object>> found = stmCache.query(new ScanQuery<String, Object>( new IgniteBiPredicate<String, Object>() { @Override public boolean ap

我正在尝试从我的命名分区缓存中获取所有项。目前我正在使用

  List<Cache.Entry<String, Object>> found =
        stmCache.query(new ScanQuery<String, Object>(
        new IgniteBiPredicate<String, Object>() {
           @Override
           public boolean apply(String key, Object person) {
              return true;
           }
        })).getAll();

要执行相同的操作或任何其他建议?

您可以广播一个任务,该任务将在多个线程中的每个节点上运行本地扫描查询

Smth类似:

ignite.compute(ignite.cluster().forDataNodes("myCache")).broadcast(
  -> {
     UUID locNode = ignite0.cluster().localNodeId();

     int[] parts = ignite0.affinity("myCache").primaryPartitions(locNode);

    Arrays.asList(parts).parallelStream().forEach(p -> {
       new ScanQuery().setLocal(true).setPartition(p).setFilter(...).getAll();
    })
  }
)

您可以广播将在多个线程中的每个节点上运行本地扫描查询的任务

Smth类似:

ignite.compute(ignite.cluster().forDataNodes("myCache")).broadcast(
  -> {
     UUID locNode = ignite0.cluster().localNodeId();

     int[] parts = ignite0.affinity("myCache").primaryPartitions(locNode);

    Arrays.asList(parts).parallelStream().forEach(p -> {
       new ScanQuery().setLocal(true).setPartition(p).setFilter(...).getAll();
    })
  }
)
尝试
cache.iterator()
API:

Iterator iter=cache.Iterator()

尝试
cache.iterator()
API:

Iterator iter=cache.Iterator()

您可以使用JDK 1.8将
Iterable
转换为

Stream<javax.cache.Cache.Entry<YourKey, YourValue>> stream =
    StreamSupport.stream(yourIgniteCache.spliterator(), false);
您可以使用from JDK 1.8将
Iterable
转换为
Stream

Stream<javax.cache.Cache.Entry<YourKey, YourValue>> stream =
    StreamSupport.stream(yourIgniteCache.spliterator(), false);

这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。-@伦丁,你在开玩笑吗?这是正确的答案。没有什么可添加的,只需使用此API即可。您熟悉ApacheIgnite吗?以问号结尾的单行回答“您尝试过吗?”是一条评论,而不是答案。因此,您的帖子最终进入了低质量的评论队列。上面的评论是根据该评论自动发布的。不管怎样,你现在已经确定了答案,所以没问题。@PavelTupitsyn这是如何执行的?它会对每个密钥对进行网络调用吗?嘿@PavelTupitsyn:有没有办法以异步方式获取所有密钥?这并不能回答这个问题。若要评论或要求作者澄清,请在其帖子下方留下评论。-@伦丁,你在开玩笑吗?这是正确的答案。没有什么可添加的,只需使用此API即可。您熟悉ApacheIgnite吗?以问号结尾的单行回答“您尝试过吗?”是一条评论,而不是答案。因此,您的帖子最终进入了低质量的评论队列。上面的评论是根据该评论自动发布的。不管怎样,你现在已经确定了答案,所以没问题。@PavelTupitsyn这是如何执行的?它会对每个密钥对进行网络调用吗?嘿@PavelTupitsyn:有没有办法以异步方式获取所有密钥?