LevelDB 编译安装

2021-04-04  本文已影响0人  wayyyy

LevelDB 是由Google两位大牛开发的单机KV存储系统:

编译安装
git clone https://github.com/google/leveldb.git
cd leveldb
git submodule update --init --recursive 
mkdir -p build
cd build
cmake  -DCMAKE_BUILD_TYPE=Debug ..  
make

编译完成后,会生成2个相应的目录,out-shared 和 out-static,分别对应动态库文件和静态库文件。然后安装:

make install
源码目录
测试
#include <assert.h>
#include <string.h>
#include <iostream>
#include "leveldb/db.h"

int main()
{
    leveldb::DB *db;
    leveldb::Options options;
    options.create_if_missing = true;
    leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);
    assert(status.ok());

    std::string k1 = "name";
    std::string v1 = "jim";

    status = db->Put(leveldb::WriteOptions(), k1, v1);
    assert(status.ok());

    status = db->Get(leveldb::ReadOptions(), k1, &v1);
    assert(status.ok());
    std::cout << "k1:" << k1 << "; v1:" << v1 << std::endl;

    std::string k2 = "age";
    std::string v2 = "20";

    status = db->Put(leveldb::WriteOptions(), k2, v2);
    assert(status.ok());
    status = db->Get(leveldb::ReadOptions(), k2, &v2);
    assert(status.ok());
    std::cout << "k2:" << k2 << "; v2:" << v2 << std::endl;

    status = db->Delete(leveldb::WriteOptions(), k2);
    assert(status.ok());
    std::cout << "Delete k2.." << std::endl;
    status = db->Get(leveldb::ReadOptions(), k2, &v2);
    if (!status.ok())
        std::cerr << "k2:" << k2 << "; " << status.ToString() << std::endl;
    else
        std::cout << "k2:" << k2 << "; v2:" << v2 << std::endl;

    delete db;
    return 0;
}
g++ -g -o test test.cpp -lleveldb -lpthread

性能测试


参考资料
1、https://zhuanlan.zhihu.com/p/80684560
2、https://zhuanlan.zhihu.com/codeit

上一篇 下一篇

猜你喜欢

热点阅读