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