java - Rocks DB的Java API是否支持前缀扫描?

标签 java rocksdb

我在 Rocks DB 中有巨大的数据集(键值),我必须根据手中的键前缀来搜索键。我不想扫描整个数据集以根据键前缀过滤出键。有什么办法可以做到这一点吗?

最佳答案

你可以使用这样的东西。 使用 RocksIterator 有一个公开的 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())));
}

希望对您有帮助。

关于java - Rocks DB的Java API是否支持前缀扫描?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38244095/

相关文章:

java - Jackson 自定义序列化以展平对象

java - JMS 生产者和消费者花费了太多时间。为什么?

java - 从命令行启动 eclipse 时出错

java - 更简洁的正则表达式?

Java:Spring MVC - 如何在 Controller 操作中访问更新的模型?

apache-spark - 如何将RocksDB用于HDFS?

hadoop - 将键值数据库与 Spark 集成

c++ - RocksDB 获取列族键值

apache-kafka - 如果 RocksDB 缓存在内存中,为什么要在 Kafka Streams Processor API 中启用记录缓存?