栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

RocksDB和db

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RocksDB和db

Introduction

After remaking N times, I made this blog finally.

Let’s start from a new Ubuntu now.

Steps Step 1

首先安装gcc、g++等工具。

sudo apt install build-essential

然后安装一些必要的库,用于RocksDB的Compression。

sudo apt-get install libsnappy-dev zlib1g-dev libbz2-dev liblz4-dev libzstd-dev libgflags-dev
Step 2

下载RocksDB源码并解压。

wget https://github.com/facebook/rocksdb/archive/v6.25.1.zip
unzip rocksdb-6.25.1.zip

Tips:

  • 版本号可自己选择,下面涉及到版本号的命令需要对应更改。e.g. v6.6.4 (2020-01-31)
  • 此过程需要的时间可能较长,可以通过其他方法下载zip压缩包,拷贝至Ubuntu系统。(Recommended)
  • 如果压缩包名字略有不同,自行更改。
Step 3

编译生成动态链接库和静态链接库

cd rocksdb-6.25.1
make shared_lib && sudo make install-shared
make static_lib && sudo make install-static

Tips:

  • 如果先生成静态链接库再生成动态链接库,在生成动态链接库的时候会报错。

    make static_lib && sudo make install-static
    make shared_lib && sudo make install-shared
    

    解决办法如下:

    make clean
    make shared_lib
    make static_lib
    
  • 此过程需要的时间较长(约10min)。

最后执行sudo make install命令。

sudo make install
Step 4

设置环境变量

#echo "/usr/local/lib" |sudo tee /etc/ld.so.conf.d/rocksdb-x86_64.confsudo ldconfig -v
make shared_lib && sudo make install-shared
sudo ldconfig -v

Tips:

  • #echo "/usr/local/lib" |sudo tee /etc/ld.so.conf.d/rocksdb-x86_64.confsudo ldconfig -v: refresh the ldconfig cacheINSTALL_PATH=/usr
  • sudo ldconfig -v: refresh the ldconfig cache
Test

新建测试程序rocksdbtest.cpp

#include 
#include 
#include "rocksdb/db.h"
#include "rocksdb/slice.h"
#include "rocksdb/options.h"

using namespace std;
using namespace rocksdb;

const std::string PATH = "/tmp/rocksdb_tmp";

int main() {
    DB* db;
    Options options;
    options.create_if_missing = true;
    Status status = DB::Open(options, PATH, &db);
    assert(status.ok());
    Slice key("foo");
    Slice value("bar");
    
    std::string get_value;
    status = db->Put(WriteOptions(), key, value);
    if(status.ok()) {
        status = db->Get(ReadOptions(), key, &get_value);
        if(status.ok()) {
            printf("get %s success!!n", get_value.c_str());
        }
        else {
            printf("get failedn"); 
        }
    }
    else {
        printf("put failedn");
    }
    
    delete db;
}

动态编译

g++ -std=c++11 -o rocksdbtest rocksdbtest.cpp -lrocksdb  -lpthread

执行

./rocksdbtest

正确结果

get bar success!!
Reference
  • https://blog.51cto.com/u_15081048/2592774
  • https://www.jianshu.com/p/575b2e27b028
  • https://blog.csdn.net/zhangpeterx/article/details/96869454
  • https://www.cxyzjd.com/article/zhangpeterx/96869454
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/323390.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号