Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rocks DB的Java API支持前缀扫描吗?_Java_Rocksdb - Fatal编程技术网

Rocks DB的Java API支持前缀扫描吗?

Rocks DB的Java API支持前缀扫描吗?,java,rocksdb,Java,Rocksdb,我在Rocks DB中有巨大的数据集(键值),我必须根据手中的键的前缀来搜索键。我不想扫描整个数据集以根据密钥前缀筛选出密钥。有办法吗 你可以用这样的东西。 使用RoistStRealor有一个API,在那里你可以搜索到密钥子串,如果你的密钥从前缀开始,那么考虑这个键。 请查找示例代码 List<String> result = new ArrayList<String>(); RocksIterator iterator = db.newIterator(); for

我在Rocks DB中有巨大的数据集(键值),我必须根据手中的键的前缀来搜索键。我不想扫描整个数据集以根据密钥前缀筛选出密钥。有办法吗

你可以用这样的东西。 使用RoistStRealor有一个API,在那里你可以搜索到密钥子串,如果你的密钥从前缀开始,那么考虑这个键。 请查找示例代码

List<String> result = new ArrayList<String>();
RocksIterator iterator = db.newIterator();
for (iterator.seek(prefix.getBytes()); iterator.isValid(); iterator
                .next()) {
           String key = new String(iterator.key());
            if (!key.startsWith(prefix))
            break;
      result.add(String.format("%s", new String(iterator.key())));
}
List result=new ArrayList();
RocksIterator迭代器=db.newIterator();
for(iterator.seek(prefix.getBytes());iterator.isValid();iterator
.next()){
字符串键=新字符串(iterator.key());
如果(!key.startsWith(前缀))
打破
添加(String.format(“%s”),新字符串(iterator.key());
}

希望它能帮助您。

Seek的工作速度非常慢。SSD磁盘上5.35秒,10亿条记录

密钥的大小是固定的16字节。搜索了8个字节

2个长字节[xx,xx]

搜索长度为8字节的1


使用ColumnFamily映射键。

请在您的答案中添加一些解释,以便其他人可以从中学习