Introduction
看了很多教程,踩了很多坑,remake了无数遍…总结出来的这份应该是没有太大问题的。
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=/usrsudo ldconfig -v
: refresh the ldconfig cache
Test
新建测试程序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 = "/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 failed\n");
}
}
else {
printf("put failed\n");
}
delete db;
}
动态编译
g++ -std=c++11 -o rocksdbtest rocksdbtest.cpp -lrocksdb -lpthread
执行
./rocksdbtest
正确结果
get bar success!!
db_bench
make clean
make db_bench
./db_bench
Tips:
- 运行db_bench时设置参数
e.g../db_bench -benchmarks="fillrandom,stats" -statistics -key_size=16 -value_size=65536 -db=./test_db1 -wal_dir=./test_db1 -duration=6000 -level0_file_num_compaction_trigger=1 -enable_pipelined_write=true -compression_type=None -stats_per_interval=1 -stats_interval_seconds=10 -max_write_buffer_number=6