You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu系统中RocksDB编译完成后如何启动及使用

嘿,我完全懂你现在的迷茫——RocksDB可不是那种能直接启动的后台服务,它是个嵌入式键值存储库,得通过代码调用API来使用它。不过别慌,我一步步给你捋清楚上手的步骤:

1. 先拿官方自带的命令行工具练手

你之前只编译了静态库,其实可以先编译官方提供的命令行工具,快速验证安装效果,还能直观体验RocksDB的基本操作:

  • 回到你的rocksdb目录,执行:

    make ldb db_bench
    

    这会编译出两个实用工具:ldb(用来做基础的键值操作)和db_bench(用来做性能测试)。编译完成后,工具会放在build/tools/目录下。

  • ldb操作测试数据库:

    • 写入一条数据:
      ./build/tools/ldb --db=./test_rocksdb put user:1001 "Alice Smith"
      
    • 读取这条数据:
      ./build/tools/ldb --db=./test_rocksdb get user:1001
      
    • 遍历所有键值对:
      ./build/tools/ldb --db=./test_rocksdb scan
      
    • 删除数据:
      ./build/tools/ldb --db=./test_rocksdb delete user:1001
      

    执行这些命令后,你会在当前目录看到test_rocksdb文件夹,里面就是RocksDB存储的数据文件。

2. 写一个简单的C++程序调用RocksDB API

RocksDB的核心用法是通过代码集成,这里给你一个最小的C++示例,涵盖最基础的增删改查:

  • 先创建一个test_rocksdb.cpp文件,内容如下:

    #include <iostream>
    #include <string>
    #include "rocksdb/db.h"
    
    int main() {
      rocksdb::DB* db;
      rocksdb::Options options;
      // 如果指定的数据库目录不存在,自动创建
      options.create_if_missing = true;
    
      // 打开数据库
      rocksdb::Status status = rocksdb::DB::Open(options, "./my_first_db", &db);
      if (!status.ok()) {
        std::cerr << "打开数据库失败: " << status.ToString() << std::endl;
        return 1;
      }
    
      // 写入数据
      const std::string key = "product:200";
      const std::string value = "Wireless Headphones";
      status = db->Put(rocksdb::WriteOptions(), key, value);
      if (status.ok()) {
        std::cout << "写入成功: " << key << " → " << value << std::endl;
      }
    
      // 读取数据
      std::string retrieved_value;
      status = db->Get(rocksdb::ReadOptions(), key, &retrieved_value);
      if (status.ok()) {
        std::cout << "读取到数据: " << key << " → " << retrieved_value << std::endl;
      }
    
      // 更新数据
      const std::string new_value = "Noise-Canceling Wireless Headphones";
      status = db->Put(rocksdb::WriteOptions(), key, new_value);
      if (status.ok()) {
        std::cout << "更新成功: " << key << " → " << new_value << std::endl;
      }
    
      // 删除数据
      status = db->Delete(rocksdb::WriteOptions(), key);
      if (status.ok()) {
        std::cout << "删除成功: " << key << std::endl;
      }
    
      // 别忘了关闭数据库
      delete db;
      return 0;
    }
    
  • 编译这个程序(需要链接RocksDB库和依赖):

    g++ test_rocksdb.cpp -o test_rocksdb -I./include -L./ -lrocksdb -lgflags -lsnappy -lz -lbz2 -lzstd -lpthread
    

    解释下参数:

    • -I./include:指定RocksDB头文件的位置
    • -L./:指定RocksDB静态库(librocksdb.a)的位置
    • -lrocksdb:链接RocksDB库
    • 后面的-lgflags -lsnappy ...是链接你之前安装的依赖库
  • 运行程序:

    ./test_rocksdb
    

    你会看到控制台输出每一步操作的结果,同时当前目录会生成my_first_db文件夹,这就是你的数据库存储目录。

3. 关键概念梳理
  • RocksDB是嵌入式的:你的程序直接和本地的数据库文件交互,不需要启动任何额外的服务进程
  • 核心操作围绕DB对象展开:打开/关闭数据库、Put(写入/更新)、Get(读取)、Delete(删除)是最基础的操作
  • 配置通过Options类实现:比如你可以设置缓存大小、压缩算法、是否允许创建新数据库等,官方文档里的Basic Operations部分就是讲这些API的细节,你可以对照着上面的示例去理解
额外小技巧
  • 如果想编译动态库(方便后续项目链接),可以执行make shared_lib,生成librocksdb.so文件
  • 要是想探索更多高级功能,比如批量操作、事务、迭代器遍历,可以去官方文档里找对应的API示例,结合代码调试会更容易理解

内容的提问来源于stack exchange,提问作者SimAzz

火山引擎 最新活动