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提供了
Put
, Delete
,和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
- Leveldb使用方法
- LevelDb
- LevelDb
- LevelDb
- leveldb
- leveldb
- leveldb
- leveldb
- LevelDb
- LevelDb
- Leveldb
- Leveldb
- levelDB
- LevelDb
- leveldb
- LevelDb
- LevelDb
- LevelDb
- LeetCode 190:Reverse Bits
- ListView图片优化(三)---练习
- 我们眼中的2015年互联网10大产品事件
- linux => Linux下的Notepad++编辑器——Notepadqq
- datomic数据库——ACID(1)
- Leveldb使用方法
- Linux——Linux 文件系统基本结构
- Mapreduce代码编写问题汇总
- 朴素贝叶斯
- ViewPager 的简单使用(一)
- 欢迎使用CSDN-markdown编辑器
- Linux——Linux 文件基本操作
- 泊松分布的理解与Python仿真
- 1、Android代码命名规范