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




