Leveldb使用方法

来源:互联网 发布:卡通视频制作软件 编辑:程序博客网 时间:2024/05/04 00:01

原文地址:https://rawgit.com/google/leveldb/master/doc/index.html。

注意:翻译时译者有节选。

Leveldb

作者:Jeff Dean, Sanjay Ghemawat

leveldb是一个键值对数据库。键和值可以是任意字节数。键根据键值和用户指定的比较算子来排列。

打开一个数据库

leveldb的数据库文件和它在文件系统中的文件夹名字一致,所有的数据库文件都保存在这个目录里面。下面的代码演示了如何打开一个数据库,如果不存在,则新建该数据库。

  #include <cassert>  #include "leveldb/db.h"  leveldb::DB* db;  leveldb::Options options;  options.create_if_missing = true;  leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);  assert(status.ok());  ...
如果你希望在打开该数据库的时候,如果发现该数据库已经存在时抛出错误,那么在leveldb::DB::Open前面加上options.error_if_exists = true;

状态

你可能已经注意到了 leveldb::Status类型。在leveldb中有可能出错的函数基本都会返回该类型。你可以通过它来检查操作是否成功,并且给出错误信息。

关闭数据库

当你想要关闭数据库的时候,执行删除掉数据库对象即可,如下所示:
  ... open the db as described above ...  ... do something with db ...  delete db;

读和写

leveldb提供了PutDelete,和Get方法来修改或查询数据库。如下面的代码所示,把key1和key2的值交换。
  std::string value;  leveldb::Status s = db->Get(leveldb::ReadOptions(), key1, &value);  if (s.ok()) s = db->Put(leveldb::WriteOptions(), key2, value);  if (s.ok()) s = db->Delete(leveldb::WriteOptions(), key1);

迭代

下面的例子展示了如何打印出所有的键值对。

leveldb::Iterator* it = db->NewIterator(leveldb::ReadOptions());  for (it->SeekToFirst(); it->Valid(); it->Next()) {    cout << it->key().ToString() << ": "  << it->value().ToString() << endl;  }  assert(it->status().ok());  // Check for any errors found during the scan  delete it;

下面的例子展示如何打印介于start和limit之间的键值对

  for (it->Seek(start);       it->Valid() && it->key().ToString() < limit;       it->Next()) {    ...  }

参考文章:
1  leveldb入门知识 http://qiuqiang1985.iteye.com/blog/1255365
2  leveldb源码分析 之 入门使用  http://qiuqiang1985.iteye.com/blog/1255365
3 LevelDB 简介 http://www.bubuko.com/infodetail-411090.html





0 0
原创粉丝点击