美文网首页
LevelDB 编译安装

LevelDB 编译安装

作者: wayyyy | 来源:发表于2021-04-04 16:15 被阅读0次

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
源码目录
  • db
    包含数据库的一些基本接口操作与内部实现
  • table
    为排序的字符串表SStable 的主体实现
  • helpers
    定义LevelDB
  • util
    包含一些通用的基础类函数,如内存管理,布隆过滤器,编码,CRC等相关函数
  • include
    包含LevelDB 库函数,可供外部访问的接口,基本数据结构等
  • port
    定义一个通用的底层文件平台,以及多个进程操作接口
测试
#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

相关文章

网友评论

      本文标题:LevelDB 编译安装

      本文链接:https://www.haomeiwen.com/subject/dkmfektx.html