rocksDB 安裝教程

rocksDB是一個嵌入式的數(shù)據(jù)庫,這里不要把它想象成MySQL這樣的數(shù)據(jù)庫服務(wù)了,它類似于sqlLite。我們這里是安裝教程,所以對其概念以及特點不做過多概述。下面開始進(jìn)入安裝教程:

1. 環(huán)境準(zhǔn)備:

服務(wù)器:CentOS Linux release 7.3.1611 (Core) 64位
g++版本:g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39)
cmake版本:version 3.12.0-rc1
rocksDB版本:6.4.6

2. 相關(guān)依賴:

命令行參數(shù)解析工具:gflags
這里從源碼編譯,如果沒有安裝git,需要去 https://github.com/gflags/gflags.git 下載gflags的源碼包 。
如果有g(shù)it則直接 git clone https://github.com/gflags/gflags.git

// 1
cd gflags/src/
// 2
make && make install

壓縮和解壓縮的開發(fā)包:snappy

yum install snappy snappy-devel

壓縮和解壓縮的開發(fā)包:zlib

yum install zlib zlib-devel

基于Burrows-Wheeler 變換的無損壓縮軟件:bzip2

yum install bzip2 bzip2-devel

lz4壓縮工具:lz4

yum install lz4-devel

Linux下內(nèi)存檢測工具:asan

yum install libasan

壓縮工具:zstandard
獲取其源碼安裝包,wget https://github.com/facebook/zstd/archive/v1.1.3.tar.gz 到指定目錄下,然后執(zhí)行如下命令:

// 1
mv v1.1.3.tar.gz zstd-1.1.3.tar.gz
// 2
tar zxvf zstd-1.1.3.tar.gz
// 3
cd zstd-1.1.3
// 4
make && make install

3. 安裝rocksDB

3.1 如果已經(jīng)有了rocksDB的靜態(tài)庫,動態(tài)庫,操作如下

我們此文檔中編譯好的rocksDB包路徑:/data/disk2/blockchain/rocksdb-6.4.6
執(zhí)行如下三個操作:

// 1
cp librocksdb.so.6.4.6 /usr/local/lib
// 2
ln -s librocksdb.so.6.4.6 /usr/local/lib/librocksdb.so.6
// 3
ln -s librocksdb.so.6.4.6 /usr/local/lib/librocksdb.so

執(zhí)行以上三步,就OK了。


image.png
3.2 源碼安裝部署rocskDB

編譯過程如下:

// 1,解壓rocksDB
tar -zxvf rocksdb-6.4.6.tar.gz
// 2 進(jìn)入解壓后的目錄
cd rocksdb-6.4.6/
// 3,編譯靜態(tài)庫,獲得 librocksdb.a
make static_lib
// 4,編譯動態(tài)庫,獲得 lbrocksdb.so
make shared_lib

然后將動態(tài)庫文件copy到系統(tǒng)庫目錄下:

// 1
cp librocksdb.so.6.4.6 /usr/local/lib
// 2
ln -s librocksdb.so.6.4.6 /usr/local/lib/librocksdb.so.6
// 3
ln -s librocksdb.so.6.4.6 /usr/local/lib/librocksdb.so

4. 配置環(huán)境變量:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

我們最好在環(huán)境變量中添加:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib


image.png

至此,安裝完成。

5,驗證安裝

下面檢查下是否安裝成功:
rocksdbtest.cpp 測試用例如下:

#include <cstdio>
#include <string>

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

using namespace std;
using namespace rocksdb;

const std::string PATH = "/data/disk2/blockchain/rocksdbTemp"; //rocksDB的數(shù)據(jù)存儲目錄絕對路徑

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

    delete db;
}

編譯rocksdbtest.cpp:

// 1
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib:/data/disk2/blockchain/rocksdb-6.4.6

// 2
g++ -std=c++11 -o rocksdbtest2 rocksdbtest.cpp -I /data/disk2/blockchain/rocksdb-6.4.6/include -L/data/disk2/blockchain/rocksdb-6.4.6 -lrocksdb -ldl

編譯好測試用例cpp文件后,執(zhí)行:./rocksdbtest
打?。簐alue is success 說明rocksDB安裝成功。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容