Linux上leveldb的安装和使用
1.首先从官网上下载leveldb进行编译
git clone https://github.com/google/leveldb.git
cd leveldb
make
2.将头文件和动态链接库拷到系统文件里,创建软连接,执行ldconfig命令,将动态链接库加到缓存中,使得系统可以真正使用这个动态链接库
scp -r out-static/lib* out-shared/lib* /usr/local/lib/
cd include/
scp -r leveldb /usr/local/include/
cd leveldb
rm -f /usr/local/lib/libleveldb*
scp -r out-static/lib* out-shared/lib* /usr/local/lib/
scp -r out-static/lib* out-shared/lib* /usr/local/lib/
ls -l /usr/local/lib/libleveldb*
ldconfig
3.写一个样例代码main.cc测试安装好的leveldb
#include "leveldb/db.h"
#include <cassert>
#include <iostream> using namespace std;
using namespace leveldb; int main() {
leveldb::DB *db;
leveldb::Options options;
options.create_if_missing = true;
leveldb::Status status = leveldb::DB::Open(options, "testdb", &db);
assert(status.ok()); status = db->Put(WriteOptions(), "test", "Hello World!");
assert(status.ok());
string res;
status = db->Get(ReadOptions(), "test", &res);
assert(status.ok());
cout << res << endl; delete db;
return ;
}
4.动态链接库编译如下,动态链接库不需要在当前文件下,系统能自动到相关路径下查找
g++ main.cc -o main -lpthread -lleveldb
注意:一定要加-lpthread,因为leveldb有用到线程相关调用。
5.运行编译好的文件
./main
输出结果:
Hello World!
6.再尝试一下小程序mytest.cc
#include <iostream>
#include <cassert>
#include <cstdlib>
#include <string>
#include <leveldb/db.h>
using namespace std;
int main(void)
{
leveldb::DB *db;
leveldb::Options options;
options.create_if_missing=true;
leveldb::Status status = leveldb::DB::Open(options,"./testdb",&db);
assert(status.ok());
std::string key1="people";
std::string value1="jason";
std::string value;
leveldb::Status s=db->Put(leveldb::WriteOptions(),key1,value1);
if(s.ok())
s=db->Get(leveldb::ReadOptions(),"people",&value);
if(s.ok())
cout<<value<<endl;
else
cout<<s.ToString()<<endl;
delete db;
return ;
}
7.编译
g++ mytest.cc -o mytest -lpthread -lleveldb
运行编译好的文件
./mytest
输出结果
jason
8.再加上删除操作呢
#include <iostream>
#include <string>
#include <assert.h>
#include "leveldb/db.h" using namespace std; int main(void)
{ leveldb::DB *db;
leveldb::Options options;
options.create_if_missing = true; // open
leveldb::Status status = leveldb::DB::Open(options,"/tmp/testdb", &db);
assert(status.ok()); string key = "name";
string value = "chenqi"; // write
status = db->Put(leveldb::WriteOptions(), key, value);
assert(status.ok()); // read
status = db->Get(leveldb::ReadOptions(), key, &value);
assert(status.ok()); cout<<value<<endl; // delete
status = db->Delete(leveldb::WriteOptions(), key);
assert(status.ok()); status = db->Get(leveldb::ReadOptions(),key, &value);
if(!status.ok()) {
cerr<<key<<" "<<status.ToString()<<endl;
} else {
cout<<key<<"==="<<value<<endl;
} // close
delete db; return ;
}
9.编译
g++ test.cpp -o test -lpthread -lleveldb
运行
./test
输出结果
chenqi
name NotFound:
10.查看一下testdb里的内容吧
cd /tmp/testdb/
输出结果
000005.ldb 000006.log CURRENT LOCK LOG LOG.old MANIFEST-000004
参考文献:
1.http://luodw.cc/2015/10/14/leveldb-01/
2.https://gist.github.com/dustismo/6203329
3.https://zhuanlan.zhihu.com/p/27329248
4.http://www.cnblogs.com/chenny7/p/4026447.html
Linux上leveldb的安装和使用的更多相关文章
- 【Oracle 集群】11G RAC 知识图文详细教程之RAC在LINUX上使用NFS安装前准备(六)
RAC在LINUX上使用NFS安装前准备(六) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇 ...
- 怎么在Linux上下载并安装ESET NOD32 Antivirus 4桌面版
转自:怎么在Linux上下载并安装ESET NOD32 Antivirus 4桌面版 下载并安装ESET NOD32 Antivirus 4的Linux桌面版,根据下面的步骤一步一步的来: I. 下 ...
- JProfiler远程监控Linux上Tomcat的安装过程细讲(步骤非常详细!!!)
JProfiler远程监控Linux上Tomcat的安装过程细讲(步骤非常详细!!!) 1.文件准备: 服务器:CentOS Linux release 7.3.1611 (Core) Apa ...
- 转载:【Oracle 集群】RAC知识图文详细教程(六)--RAC在LINUX上使用NFS安装前准备
文章导航 集群概念介绍(一) ORACLE集群概念和原理(二) RAC 工作原理和相关组件(三) 缓存融合技术(四) RAC 特殊问题和实战经验(五) ORACLE 11 G版本2 RAC在LINUX ...
- Linux上用mvn安装node.js
Linux上用mvn安装node.js 上一篇blog简略的讲了ubuntu系统的安装,接下来讲讲Ubuntu上的基于node.js的web开发环境的搭建. Node在快速构建网络服务有着极大的优势, ...
- 大数据学习——Linux上常用软件安装
4.1 Linux系统软件安装方式 Linux上的软件安装有以下几种常见方式: 1.二进制发布包 软件已经针对具体平台编译打包发布,只要解压,修改配置即可 2.RPM发布包 软件已经按照redhat的 ...
- Windows 和 Linux 上Redis的安装守护进程配置
# Windows 和 Linux 上Redis的安装守护进程配置 Redis 简介 Redis是目前最常用的非关系型数据库(NOSql)之一,常以Key-Value的形式存储.Redis读写速度 ...
- 【转】【Oracle 集群】11G RAC 知识图文详细教程之RAC在LINUX上使用NFS安装前准备(六)
原文地址:http://www.cnblogs.com/baiboy/p/orc6.html 阅读目录 目录 介绍 下载软件 操作系统安装 Oracle安装先决条件 创建共享磁盘 参考文献 相关文章 ...
- 在Linux上下载和安装AAC音频编码器FAAC
Linux上FAAC的安装 安装 下载 http://downloads.sourceforge.net/faac/faac-1.28.tar.gz 解压 tar zxvf faac-1.28.tar ...
随机推荐
- 腾讯qq等级计算公式面试题
就三道题大概是: 1. 推算出等级相应的天数 这个还比較简单,公式是:(b=2a+3) a是等级, b是相应的天数 2. 推算出等级总共的天数 先看下规律 等级a 相应天数b 总天数s 1 5 5 ...
- myeclipse tomcat java.lang.OutOfMemoryError: PermGen space错误的解决方法
错误代码: java.lang.OutOfMemoryError: PermGen space 原因分析: myeclipse或tomcat的内容分配的不够用,启动失败 解决方法: 1.找到tomca ...
- Linux性能及调优指南(翻译)之Linux进程管理
本文为IBM RedBook的Linux Performanceand Tuning Guidelines的1.1节的翻译原文地址:http://www.redbooks.ibm.com/redpap ...
- JQuery插件开发标准写法
;//step01 定义JQuery的作用域 (function ($) { //step03-a 插件的默认值属性 var defaults = { prevId: 'prevBtn', prevT ...
- Swift 是猴还是猿?
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:段义鹏 导语 Swift和Objective-C是目前开发 Apple App的两门主要语言.Swift自2014年发布到目前为止其行业 ...
- 二.java下使用RabbitMQ实现hello world
上一篇文章介绍了windows环境下的安装和配置rabbitMQ,具体戳这边,一.windows环境下rabbit的的安装和配置. 现在我们可以着手编写hello world程序了,一窥RabbitM ...
- 大数据学习(6)MapReduce应用
倒排索引 /** * * * <pre> *file1.txt: *hello ketty *hello tomcat * *file2.txt: *hello hadoop * *map ...
- IntelliJ IDEA 环境常用设置整理
1.修改为Eclipse快捷键 File -> Settings -> Keymap => Keymaps改为 Eclipse copy 2.显示行号: File -> S ...
- 链接文本在a标签内标签里也可以用driver.find_element_by_link_text
如: 也可用driver.find_element_by_link_text("账户登录").click()
- 【python】集合set