環境: ubuntu16.4 須要安裝 snappy gflage bz2 zstd 以及g++ 其中zstd是facebook開放源代碼裏的壓縮的庫ios
git clone https://github.com/facebook/rocksdb.gitc++
cd rocksdb git
make static_lib 成功生成 librocksdb.a靜太庫(使用動態庫,make share_lib)github
cd examples/ubuntu
測試 simple_example.cc 編譯命令:app
g++ simple_example.cc -o test -I ../include ../librocksdb.a -std=c++11 -lpthread -lrt -lsnappy -lgflags -lz -lbz2 -lzstd 成功後生成test可執行文件測試
./testthis
修改simple_example atom
// 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(), "key1", &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(), "key1", &value); assert(s.IsNotFound()); db->Get(ReadOptions(), "key2", &value); assert(value == "value"); std::cout << value << std::endl; delete db; return 0; }
再次編譯,輸出value value spa