LevelDB使用
LevelDB使用
编译和使用
LevelDB的编译也是比较简单的,可以从官网直接克隆代码。https://github.com/google/leveldb,具体操作步骤如下(可以参考源代码中的README文件):
git clone https://github.com/google/leveldb.git
cd leveldb
mkdir -p build && cd build
cmake -DCMAKE_BUILD_TYPE=Release .. && cmake --build .
完成上述几步,就可以编译出一个静态库、一个动态库和一些测试程序。我们可以自己写一个测试代码进行测试。比如我们在leveldb目录下面创建一个test目录, 然后将静态库libleveldb.a拷贝进来,然后在其中创建一个名为test.cpp的文件,文件内容如下:
#include <assert.h>
#include <iostream>
#include <sstream>
#include "leveldb/db.h"
using namespace std;
int main(){
leveldb::DB* db;
leveldb::Options options;
options.create_if_missing = true;
//打开一个数据库
leveldb::Status status = leveldb::DB::Open(options,"./testdb1",&db);
int count = 0;
//循环多次,不断添加内容
while (count < 1000) {
std::stringstream keys ;
std::string key;
std::string value = "shuningzhang@itworld123.com";
keys << "itworld123-" << count;
key = keys.str();
status = db->Put(leveldb::WriteOptions(), key, value);//添加内容
assert(status.ok());
status = db->Get(leveldb::ReadOptions(), key, &value);//获取
assert(status.ok());
std::cout<<value<<std::endl;
count ++;
}
delete db; //关闭数据库
return 0;
}
测试程序功能很简单,就是向KV数据库添加1000个KV数据。后续我们还会用到这个程序,这里了解一下就行。具体通过如下命令可以编译成可执行程序。
g++ -o leveldbTest test.cpp libleveldb.a -lpthread -lsnappy
如果运行一下该程序,可以看到在当前目录会生成一个名为testbd1的目录,其中的内容如下所示: