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了。

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

至此,安裝完成。
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安裝成功。