环境: ubuntu16.4 需要安装 snappy gflage bz2 zstd 以及g++ 其中zstd是facebook开放源代码里的压缩的库
git clonehttps://github.com/facebook/rocksdb.git
cd rocksdb
make static_lib 成功生成 librocksdb.a静太库(使用动态库,make share_lib)
cd examples/
测试simple_example.cc 编译命令:
g++ simple_example.cc -o test -I ../include ../librocksdb.a -std=c++11 -lpthread -lrt -lsnappy -lgflags -lz -lbz2 -lzstd 成功后生成test可执行文件
./test
修改simple_example
// Copyright (c) 2011-present,Facebook,Inc. All rights reserved. // This source code is licensed under the BSD-style license found in the // LICENSE file in the root directory of this source tree. An additional grant // of patent rights can be found in the PATENTS file in the same directory. #include <cstdio> #include <string> #include <iostream> #include "rocksdb/db.h" #include "rocksdb/slice.h" #include "rocksdb/options.h" using namespace rocksdb; using namespace std; std::string kDBPath = "/tmp/rocksdb_simple_example"; int main() { DB* db; Options options; // Optimize RocksDB. This is the easiest way to get RocksDB to perform well options.IncreaseParallelism(); options.OptimizeLevelStyleCompaction(); // create the DB if it's not already present options.create_if_missing = true; // open DB Status s = DB::Open(options,kDBPath,&db); assert(s.ok()); // Put key-value s = db->Put(WriteOptions(),"key1","value"); assert(s.ok()); std::string value; // get value s = db->Get(ReadOptions(),&value); assert(s.ok()); assert(value == "value"); std::cout << value << std::endl; // atomically apply a set of updates { WriteBatch batch; batch.Delete("key1"); batch.Put("key2",value); s = db->Write(WriteOptions(),&batch); } s = db->Get(ReadOptions(),&value); assert(s.IsNotFound()); db->Get(ReadOptions(),"key2",&value); assert(value == "value"); std::cout << value << std::endl; delete db; return 0; }
再次编译,输出value value