@breakerthb
2016-07-09T08:28:40.000000Z
字数 1278
阅读 1714
DB
NoSQL
Tools
https://code.google.com/p/leveldb/
$ wget http://leveldb.googlecode.com/files/leveldb-1.7.0.tar.gz
$ tar zxvf leveldb-1.7.0.tar.gz
$ cd leveldb-1.7.0
$ make
产生libleveldb.a,这个用在自己的项目中
$sudo cp -r include/leveldb /usr/local/include
#include <assert.h>
#include <string.h>
#include <leveldb/db.h>
#include <iostream>
using namespace std;
using namespace leveldb;
int main(){
// ---- Open A Database ----
DB* db = NULL;
Options options;
options.create_if_missing = true;
//Status status = DB::Open(options,"/tmp/testdb", &db);
Status status = DB::Open(options,"testdb", &db);
assert(status.ok());
// ---- Put ----
//write key1,value1
string key="key1";
string value = "value1";
status = db->Put(WriteOptions(), key, value);
assert(status.ok());
// ---- Get ----
status = db->Get(ReadOptions(), key, &value);
assert(status.ok());
cout << value << endl;
// ---- Delete ----
status = db->Delete(WriteOptions(), key);
assert(status.ok());
status = db->Get(ReadOptions(),key, &value);
if(!status.ok())
{
cerr << key << "--Error--: " << status.ToString() << endl;
}
else
{
cout << key << "===" << value << endl;
}
// ---- Closing A Database ----
delete db;
return 0;
}
编译:
$ g++ -o Main Main.cpp libleveldb.a -I/usr/local/include -lsnappy -lpthread
实现原理
http://www.cnblogs.com/haippy/archive/2011/12/04/2276064.html
源码分析