Leveldb使用方法

原文地址: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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值