#include <iostream>
#include <leveldb/db.h>
#include <leveldb/write_batch.h> //原子更新操作
#include <assert.h>
using namespace std;
using namespace leveldb;
int main(int argc,char * argv[])
{
leveldb::DB* db;
leveldb::Options op;
leveldb::Status s ;
op.create_if_missing = true;
//op.error_if_exists = true;
//string dbpath = "/tmp/testdb";
string dbpath = "/data/osd.1/current/omap";
s = leveldb::DB::Open(op, dbpath, &db);
assert(s.ok());
cout<<"open db succ"<<std::endl;
/*std::string key = "100001";
std::string val = "this is 100001's value";
std::string retVal;
s = db->Put(leveldb::WriteOptions(), key, val);
s = db->Get(leveldb::ReadOptions(), key, &retVal);
s = db->Delete(leveldb::WriteOptions(), key);
cout<<retVal<<std::endl; */
leveldb::Iterator* it = db->NewIterator( leveldb::ReadOptions() );
std::string mkey,mval;
for ( it->SeekToFirst(); it->Valid(); it->Next() )
{
mkey = it->key().ToString();
mval = it->value().ToString();
cout << "key=" << mkey <<", val=" << mval <<std::endl;
//if ( mkey.find("s3") != string::npos )
//cout << "------------find " << mkey << "----------" << mval << std::endl;
}
assert(it->status().ok()); //check
delete it;
delete db;
cout<<"over!"<<std::endl;
return 0;
}
rm ./ldbtest
g++ -g ldbtest.cpp -o ldbtest -L. -I./include -lpthread -lleveldb
./ldbtest
参考:
1. http://blog.csdn.net/hzqhbc/article/details/9367327
2. http://blog.csdn.net/cywosp/article/details/20746879