levelDB
来源:互联网 发布:lami知乎 编辑:程序博客网 时间:2024/06/17 01:27
1,下载levelDB源码
git clone https://github.com/google/leveldb.git
我是下载了这个地址的zip包leveldb-master.zip,解压安装的。
2,编译LevelDB
[root@localhost ~]# unzip leveldb-master.zip[root@localhost ~]# cd leveldb-master[root@localhost leveldb-master]# make all
编译完成之后在当前目录多了两个目录:out-shared和out-static
在out-static目录下有我们需要的libleveldb.a,out-shared下则是对应的静态库。由于make完之后并没有make install这样的命令,如果要使用这个库,把他拷贝到系统库路径下即可.
[root@localhost leveldb-master]# cp out-shared/libleveldb.so* /usr/local/lib & cp -R include/* /usr/local/include[1] 31021[1]+ 完成 cp -i out-shared/libleveldb.so* /usr/local/lib
3,在当前目录新建文件夹test
[root@localhost leveldb-master]# mkdir test[root@localhost leveldb-master]# cd test/
4,在test目录新建测试代码test.cpp
#include <assert.h> #include <string.h> #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::string k1 = "name"; std::string v1 = "jim"; status = db->Put(leveldb::WriteOptions(), k1, v1); assert(status.ok()); status = db->Get(leveldb::ReadOptions(), k1, &v1); assert(status.ok()); std::cout<<"k1:"<<k1<<"; v1:"<<v1<<std::endl; std::string k2 = "age"; std::string v2 = "20"; status = db->Put(leveldb::WriteOptions(), k2, v2); assert(status.ok()); status = db->Get(leveldb::ReadOptions(), k2, &v2); assert(status.ok()); std::cout<<"k2:"<<k2<<"; v2:"<<v2<<std::endl; status = db->Delete(leveldb::WriteOptions(), k2); assert(status.ok()); std::cout<<"Delete k2.."<<std::endl; status = db->Get(leveldb::ReadOptions(),k2, &v2); if(!status.ok()) std::cerr<<"k2:"<<k2<<"; "<<status.ToString()<<std::endl; else std::cout<<"k2:"<<k2<<"; v2:"<<v2<<std::endl; delete db; return 0;}
5,编译运行
编译:
[root@localhost test]# g++ -o test test.cpp -lleveldb -lpthread
运行:
[root@localhost test]# ./testk1:name; v1:jim k2:age; v2:20 Delete k2.. k2:age; NotFound:
到目前为止,我们就基本可以使用leveldb了。
6, 执行完.test之后,在/tmp/testdb下面产生了leveldb相关的文件:
[root@localhost test]# ls -alh /tmp/testdb 总用量 32Kdrwxr-xr-x. 2 root root 4.0K 3月 16 00:29 .drwxrwxrwt. 8 root root 4.0K 3月 16 00:29 ..-rw-r--r--. 1 root root 146 3月 16 00:29 000005.ldb-rw-r--r--. 1 root root 80 3月 16 00:29 000006.log-rw-r--r--. 1 root root 16 3月 16 00:29 CURRENT-rw-r--r--. 1 root root 0 3月 16 00:29 LOCK-rw-r--r--. 1 root root 309 3月 16 00:29 LOG-rw-r--r--. 1 root root 57 3月 16 00:29 LOG.old-rw-r--r--. 1 root root 80 3月 16 00:29 MANIFEST-000004
leveldb的限制
1、非关系型数据模型(NoSQL),不支持sql语句,也不支持索引;
2、一次只允许一个进程访问一个特定的数据库;
3、没有内置的C/S架构,但开发者可以使用LevelDB库自己封装一个server;
创建于 2017-03-16 成都,更新于 2017-03-17 成都
该文章在以下平台同步
- LIBERALMAN:
- CSDN: http://blog.csdn.net/socho/article/details/62332533
- 简书:
- [1] 引用
0 0
- LevelDb
- LevelDb
- LevelDb
- leveldb
- leveldb
- leveldb
- leveldb
- LevelDb
- LevelDb
- Leveldb
- Leveldb
- levelDB
- LevelDb
- leveldb
- LevelDb
- LevelDb
- LevelDb
- leveldb
- 关于google maps camera zoom
- selenium配置
- CSS选择器(一)
- HAProxy实战搭建(一)
- svn详解
- levelDB
- android studio 百度地图打包后key验证出错问题解决
- 在片头就开始播放 《双月之城》的片尾曲 memory 效果特别震撼!!!!!
- 在activity中获取Edittext焦点创建popupwindow的坑
- ViewDragHelper实现QQ5.0侧滑并处理与ViewPager的滑动冲突
- git stash简单介绍
- Codeforces Round #404 (Div. 2) C. Anton and Fairy Tale 贪心+二分
- 使用py2exe打包发布
- maven添加jar到项目中