当前位置: 首页 > 知识库问答 >
问题:

Apache Ignite、扫描查询(不带筛选器)和cache上迭代器,都返回空结果集。缓存中的条目数为非零

谭梓
2023-03-14

Apache Ignite版本:2.8.0

在启动第一个ignite cache节点时,在下面的代码段中,给出预期的输出。当第二个ignite缓存加入集群时,第一个代码段中的entries对象为空,而第二个代码段中的iter.hasNext()给出false。

 Map results = new HashMap();
 QueryCursor<Cache.Entry> entries = binaryCache.query(new ScanQuery(null));
 logger.log(Level.DEBUG, "CacheSize from entrySet: [%s]", binaryCache.size()); // Outputs non zero number. 
 try {
   for (Cache.Entry e : entries) {
     results.put(e.getKey(), e.getValue());
   }
 } catch (IOException e) {
     throw new RuntimeException("Error deserializing ignite entry", e);
 }
 return results.entrySet();

    Map results = new HashMap();
    Iterator<Cache.Entry<Object, BinaryObject>> iter = binaryCache.iterator();
    logger.log(Level.DEBUG, "CacheSize from entrySet: [%s]", binaryCache.size()); // Outputs non zero number. 
    try {
      while(iter.hasNext()) {
        Cache.Entry e = iter.next();
        results.put(e.getKey(), e.getValue());
      }
    } catch (IOException e) {
        throw new RuntimeException("Error deserializing ignite entry", e);
    }
    
    return results.entrySet();

当null被传递给ScanQuery时,理想情况下,应该从缓存中提取所有条目。

共有1个答案

卫劲
2023-03-14

正如您在第二个示例中注意到的,IgniteCache是可迭代的。如果需要获取存储值,最简单的代码如下所示:

        IgniteCache<Object, BinaryObject> myCache = ignite.getOrCreateCache(ccfg).withKeepBinary();
        for(Cache.Entry<Object, BinaryObject> entry: myCache){
            System.out.println(entry.getKey() + " " + entry.getValue());
        }

        System.out.println("trying again");

        for(Cache.Entry<Object, BinaryObject> entry: myCache){
            System.out.println(entry.getKey() + " " + entry.getValue());
        }
 类似资料:
  • 问题内容: 我有一个具有数百万个密钥的redis数据库。有时候,我需要通过模式如查询键为我用。初次致电应该是 然后,它将返回一堆键和下一个光标;如果搜索完成,则返回0。 但是,如果我运行查询并且没有匹配的键,则仍然返回非零游标,但是键集为空。这种情况一直发生在每个后续查询中,因此搜索似乎不会在很长时间内结束。 Redis文档说 SCAN系列功能不保证每次调用返回的元素数在给定范围内。 还允许命令返

  • 我已经在该表上创建了DynamoDB表和全局辅助索引。我需要从该表的GSI中获取所有数据。 有两种选择: 无筛选表达式的扫描操作 我需要找出哪一个性能更好,以便我开始我的实现。 我已经读了很多关于DynamoDB扫描和查询操作,但可以解决我的查询。 请帮我解决我的问题。 提前谢谢。 阿披实

  • 我在用LuceneNet在个人项目中,需要处理案例,但找不到一个好的方法,Lucene将使用相同类型的查询处理这两个案例。 基本查询使用带有StandardAnalyzer的MultiFieldQueryParser和NumericRangedFilter按日期进行筛选(日期保存为长值)。 问题是,我希望过滤器处理空搜索字符串,而不必使用两个不同的查询解析器,一个用于空搜索字符串,另一个用于用户输

  • 我检查了这个问题,在elasticsearch中查询DSL中必须和过滤器有什么区别?并阅读答案。 据我所知,必须和过滤器应该返回相同的结果。我说的对吗?但是当我把过滤查询改为必须时,我收到了更多的结果?我做错了什么? 我比较了过滤器,必须查询并得到不同的结果。

  • 问题内容: 我创建了一个Hive表,该表从文本文件加载数据。但是它对所有查询返回的空结果集。 我尝试了以下命令: 命令被执行,并且表被创建。但是,对于所有查询,始终返回0行,包括 样本数据: 单行输入数据: 1 | 155190 | 7706 | 1 | 17 | 21168.23 | 0.04 | 0.02 | N | O | 1996-03-13 | 1996-02-12 | 1996-03-

  • 我正在尝试输出一个显示求职者对特定工作的申请的视图。到目前为止,我只能查看所有接收到的应用程序的转储,但我无法实现查询来仅查看特定作业的应用程序。即我希望能够查看每个不同空缺职务的条目。谢谢 \\ \\