in LevelDB 分布式数据库 ~ read.

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的目录,其中的内容如下所示: