1.下载代码
git clone https://github.com/google/leveldb.git
2.编译代码,之后会生成libleveldb.a文件
由于level把本来需要依赖的库都自己实现了,所以直接make就行,不过在g++3版本下不能会出错,需要在makefile中修改CXXFLAGS参数
CXXFLAGS += -fno-access-control -I. -I./include $(PLATFORM_CXXFLAGS) $(OPT)
3.写测试代码
#include <cassert>
#include <iostream>
#include "leveldb/db.h"
int main() {
leveldb::DB *db;
leveldb::Options options;
options.create_if_missing = true;
leveldb::Status status = leveldb::DB::Open(options, "/tmp/testdb", &db);
assert(status.ok());
std::cout << "leveldb open success!" << std::endl;
std::string value;
std::string key1 = "testkey1";
leveldb::Status s = db->Get(leveldb::ReadOptions(), key1, &value);
if (s.IsNotFound()) {
std::cout << "can not found for key:" << key1 << std::endl;
db->Put(leveldb::WriteOptions(), key1, "testvalue1");
}
s = db->Get(leveldb::ReadOptions(), key1, &value);
if (s.ok()) {
std::cout << "found key:" << key1 << ",value:" << value << std::endl;
}
s = db->Delete(leveldb::WriteOptions(), key1);
if (s.ok()) {
std::cout << "delete key success which key:" << key1 << std::endl;
}
s = db->Get(leveldb::ReadOptions(), key1, &value);
if (s.IsNotFound()) {
std::cout << "can not found after delete for key:" << key1 << std::endl;
}
delete db;
return 0;
}
4.编译 && 运行
g++ -I src -I /home/liao/github/leveldb/include src/leveldb_test.cpp /home/liao/github/leveldb/libleveldb.a -lpthread -o leveldb_test
./leveldb_test
一些感想: 粗略看了下代码,leveldb逻辑上相对清晰,代码耦合度低,可扩展性强,同时把一些常用的库都自己实现了,比如log库,test库,这样减少了使用者的成本,但是test代码和src的代码放在一起了,感觉有点乱,之后继续学习吧
分享到:
相关推荐
这个“leveldb-1.15.0修正版”是对原始LevelDB 1.15.0版本的改进,修复了编译错误,并提供了一个使用示例,使得开发者能够更顺利地在项目中集成和使用LevelDB。 **编译错误修复** 在原始的LevelDB 1.15.0版本中...
这个简单的示例展示了如何创建数据库、写入键值对以及读取数据。 四、总结 LevelDB作为一款高效的键值存储数据库,其在Windows环境下的编译与应用并不复杂。掌握其基本原理和API,可以轻松地将其融入到各种C++...
LevelDB是Google开源的一款轻量级、高性能的键值对存储系统,主要设计用于嵌入式设备和简单服务器环境。它的目标是提供一个简单的...安装完成后,可以通过提供的示例代码了解如何与LevelDB交互,进行数据的存取操作。
4. **简单API**:golang/leveldb提供了简洁的Go语言接口,开发者可以通过简单的API进行数据的存取操作,如Put、Get、Delete等。 三、工作原理 1. **Memtable与SSTable**:LevelDB将数据首先写入内存中的Memtable,...
【标题】"leveldb_1_20_win32...总的来说,"leveldb_1_20_win32源码" 提供了在32位Windows系统上使用和定制LevelDB的机会,开发者可以通过编译源代码来理解和掌握其内部工作原理,或者根据自己的需求进行定制和优化。
在"level-examples"这个项目中,我们可以期待看到如何在 JavaScript 中使用 leveldb 进行各种操作的示例,例如: 1. **安装与初始化**:首先,你需要安装 LevelUP 和 LevelDOWN。在 Node.js 中,可以通过 npm(Node...
例如,一个简单的使用Go-levigo的例子是创建一个新的数据库,设置键值对,然后读取它们: ```go import ( "github.com/jmhodges/levigo" ) func main() { opts := levigo.NewOptions() defer opts.Close() ...
9. **使用示例:** 在C++中,用户可以使用leveldb库创建数据库实例,打开数据库文件,写入键值对,读取数据,甚至进行事务操作。 通过上述解析,我们可以看出"leveldb-master.zip"是一个包含LevelDB源代码的压缩包...
LevelDB的设计目标是为应用程序提供简单、高效的数据持久化方案,尤其适合在嵌入式设备或服务器环境中使用。 LevelDB的核心特性包括: 1. **快速**:LevelDB利用了一系列优化技术,如Bloom filters和数据分层存储,...
在这个例子中,我们将深入探讨如何使用JavaScript与LevelDB进行交互,通过Grafton项目来学习这一过程。 Grafton是一个开源项目,旨在为JavaScript开发者提供一个易于使用的LevelDB接口。这个项目的名字"grafton...
通过对 Python Leveldb 的介绍及其使用示例的学习,我们不仅了解了 Leveldb 的基本概念和工作原理,还掌握了如何在 Python 中有效地使用 Leveldb 来解决实际问题。尽管 Leveldb 存在一定的局限性,例如缺乏网络服务...
LevelDB是由Google开发的一个键值对存储系统,它提供了简单但高效的数据接口,适用于各种数据存储需求,尤其是在需要快速读写的小型数据集场景中。 **LevelDB简介** LevelDB是一个开源的键值对存储库,由Google...
以下是一个简单的示例: ```go func exportDB(db *leveldb.DB, outputPath string) error { iter := db.NewIterator(nil, nil) defer iter.Release() f, err := os.Create(outputPath) if err != nil { ...
图书管理员该模块提供了一个使用简单查询语言LLCJ查询 leveldb 的接口。 基本操作涉及使用索引定义数组将文档写入数据库以生成索引文档。 这些索引定义由一组引用文档中的属性的键路径组成。 然后使用这些键路径生成...
LevelDB的源代码可以在`leveldb-master`目录下找到,包含编译脚本和示例代码。开发者可以通过提供的API进行集成,例如在C/C++项目中,可以创建DB实例,执行Put、Get、Delete等操作。 ### 6. 扩展性与局限性 尽管...
通过使用JNDI Kit,开发者可以更方便地创建自己的命名和目录服务,这些服务可以用来注册和查找对象,如数据库连接、邮件服务器配置等。这在大型企业级应用或者分布式系统中非常常见,因为它们需要管理各种跨网络的...
在 JavaScript 环境中,由于浏览器和 Node.js 的限制,不能直接使用 C++ 实现的 LevelDB,因此需要通过适配器如 `leveldown` 将 LevelDB 的接口引入到 JavaScript 中。`prodio-leveldb-store` 是一个基于 `leveldown...
leveldb 键的内存中建议读/写锁 例子 锁定的一个非常常见的用例是在检查用户名是否被占用时防止竞争条件。 在一个简单的解决方案中,一个get()后跟一个put()冒着 2 个请求可能几乎同时进入的风险,并且对get()两次...
LevelDB 、BoltDB或FastLog可调节的一致性和耐用性水平功能齐全的示例,帮助快速启动集成内置 raft 命令用于监控和管理集群支持Redis日志格式可与redigo、redis-py、node_redis、jedis和redis-cli等客户端配合使用...