leveldb小尝试
2019-04-13 20:09
2891 查看
最近项目挺忙的,也没什么时间写博客了,这篇也是工作中遇到mysql经常同时请求数据就CPU暴高,就看了下nosql,redis已经有同事尝试了,所以我就来试试leveldb。
leveldb是google开源的一个高效率的K/V数据库,地址:https://code.google.com/p/leveldb/
暂时不支持windows,虽然有windows分支,但是已经两年每更新了,按照网上的方法,折腾了一下,还是有几个函数无法链接,所以打算延后再折腾。
linux下就方便很多了,直接下载源码,make all编译,就会生成a和so文件,我用的是a文件
写了下面的一个例子,还是比较顺利
#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, "/home/test/test_leveldb/testdb", &db); std::string key = "key123"; std::string value = "value123"; status = db->Put(leveldb::WriteOptions(), key, value); assert(status.ok()); std::string value1; status = db->Get(leveldb::ReadOptions(), key, &value1); assert(status.ok()); std::cout << "get, key1:" << key << " value1:" << value1 << std::endl; std::string key1 = "key456"; status = db->Put(leveldb::WriteOptions(), key1, value1); assert(status.ok()); status = db->Delete(leveldb::WriteOptions(), key1); assert(status.ok()); delete db; return 0; }
结果不贴了,各位自己去试试就知道了。
在上面创建的文件夹里会有好几个文件,这里面就是记录了你的持久化数据。
linux是30秒才会将缓冲区的数据刷出到硬盘里,而且leveldb使用了mmap,所以可能会丢数据,看了下ideawu的博客里有写到,leveldb的作者认为 sync every second 机制应该是用户自己实现的,而不是leveldb提供,所以他基于leveldb写了一个SSDB,兼容redis协议,而且做到了每秒钟同步输出到硬盘,这样丢数据的几率就会大大降低,github地址:https://github.com/ideawu/ssdb
相关文章推荐
- Festicket 尝试音乐节一键全包服务
- Android Vector的第一次尝试
- 用cloudera manager安装impala全过程以impala、hive、Spark性能比较--------(一)初次尝试用cloudera manager安装impala
- 可以尝试网络编辑创新大赛中开设内容推荐系统的策划和设计
- leveldb入门知识
- 尝试 --浏览器访问socket
- ruby元编程的首次尝试和 memcached的使用
- Android的Kotlin尝试之记账APP1
- 请尝试将已有项目中的代码,封装成一个一个的小方法,并加上完善的注释。
- python作用域的补充,局部引用全局作用域的修改尝试,可变类型内部可修改,内存指向不可变
- 标准程序员修炼-请尝试最原始的东西
- 亲测!!尝试了在projective dynamic的global solve中直接置碰撞的位置是完全可行的
- 检测到LoaderLock,正试图在OS加载程序锁内执行托管代码,不要尝试在DllMain或映像初始化函数内运行托管代码,这样会导致应用程序挂起。
- AS 生成与混淆aar尝试经历
- 伪造IP的失败尝试
- WIN7, VMware workstation pro 14.0 无法连接 MKS:套接字连接尝试次数太多正在放弃
- 尝试玩些小编程
- 【尝试】 初次使用scrapy+python (建立项目)
- 向新手和不愿意尝试的童鞋推荐vim插件(转载)
- 注册表比较工具1 :RegShot尝试运用到安全测试中 --01 工具配置