byBatch(size) 在 SnappyDB 中是什么意思?


for (String[] batch : snappyDB.allKeysIterator().byBatch(0))

byBatch() 方法中的"size"参数是什么意思?

如果不使用byBatch,你只会有一个不实现IteratorIterableKeyIterator,所以你不能在循环中使用它。

byBatch(n)创建一个BatchIterableIterable和一个Iterator。它基本上只是在KeyIterator上调用next(n),当你调用next()它时。(来源)

KeyIterator#next(int max)似乎总是尝试从数据库中获取max元素。因此,我认为您很可能在每次迭代的示例中batch数组中有max元素。因此,像您所做的那样传递0没有多大意义(不确定这是否有效)。


此外,只需阅读 GitHub 存储库中的自述文件,就会发现一些文档:

Iterable<String[]> byBatch(int size); // Get an iterable of key batch, each batch of maximum [size] keys.

根据 SnappyDB 文档,在这里找到:

Iterable<String[]> byBatch(int size);// Get an iterable of key batch, each batch of maximum [size] keys.

因此,size 指定每个批次的最大键数。但是,根据文档:

请注意,您应该使用 byBatch 可迭代对象来处理所有 密钥仅在大型集合上。在相当小的集合上,使用 基于数组的 API(findKeys 和 findKeysBetween),其形式为 (字符串键:db.findKeys("android"))效率更高。 迭代器应仅用于处理大型集合或 集合分页视图/访问。

因此,请确保您确实需要用例中的byBatch。

相关内容

  • 没有找到相关文章

最新更新