leveldb小尝试

作者: NickYang 分类: 技术文章,程序开发 发布时间: 2014-06-07 09:54

最近项目挺忙的,也没什么时间写博客了,这篇也是工作中遇到mysql经常同时请求数据就CPU暴高,就看了下nosql,redis已经有同事尝试了,所以我就来试试leveldb。

leveldb是google开源的一个高效率的K/V数据库,地址:https://code.google.com/p/leveldb/

 

暂时不支持windows,虽然有windows分支,但是已经两年每更新了,按照网上的方法,折腾了一下,还是有几个函数无法链接,所以打算延后再折腾。

linux下就方便很多了,直接下载源码,make all编译,就会生成a和so文件,我用的是a文件

写了下面的一个例子,还是比较顺利

结果不贴了,各位自己去试试就知道了。
在上面创建的文件夹里会有好几个文件,这里面就是记录了你的持久化数据。

linux是30秒才会将缓冲区的数据刷出到硬盘里,而且leveldb使用了mmap,所以可能会丢数据,看了下ideawu的博客里有写到,leveldb的作者认为 sync every second 机制应该是用户自己实现的,而不是leveldb提供,所以他基于leveldb写了一个SSDB,兼容redis协议,而且做到了每秒钟同步输出到硬盘,这样丢数据的几率就会大大降低,github地址:https://github.com/ideawu/ssdb

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

2条评论
  • Yu

    2014 年 6 月 8 日 17:46

    assert的用途是啥?当遇到错误后abort掉,这种逻辑什么场景下能用啊 — 遇到错误难道不是应该尽可能的输出dump文件,然后暂停或者尽可能错误处理么

    此外,验证码的位置那么诡异….

    神话 Chrome浏览器 GNU/Linux x64
    1. eliteYang

      2014 年 6 月 9 日 10:49

      assert是断言啊,如果不满足括号内的条件会就出现一个弹窗,一般来说,在任何场合下都可以使用,一般用在应该不会出错误但莫名会错的地方,用log和dump的方式也可以,有时候会觉得没必要

      神话 Chrome浏览器 Windows 7 x64 Edition

发表评论

电子邮件地址不会被公开。 必填项已用*标注