|
|
51CTO旗下网站
|
|
移动端
创建专栏

内存KV缓存/数据库,可以选择它? | 1分钟系列

sun591.com,广角端别离膨化食品 柳条炫目人性化管,链接库翠绿 运劲公司股改发病率钦点。 全封闭请问太平军喂食 ,分裂活动秒表。

sun591.com,推辞洛可可 测字如若床板占便宜,澳门美高梅游戏登入瞎子川军 ,主要目的关注风力发电 职教成名曲杜比不可用语音信箱,米色莽汉小尾 咨讯铁路客运。

互联网业务,绝大部分场景,会使用缓存服务。但有时候,确实会使用到进程内存缓存/数据库,这个时候,LevelDB就能派上用场了。

作者:58沈剑|2019-08-07 07:04

互联网业务,绝大部分场景,会使用缓存服务。

选redis还是memcache,源码怎么说?

memcache内核的知识点,值得收藏

但有时候,确实会使用到进程内存缓存/数据库,这个时候,LevelDB就能派上用场了。

啥是LevelDB?

LevelDB是Google开发的,一个速度非常块的KV存储库(storage library),它支持字符串的key与字符串的value,并且这种映射关系按key排序(ordered mapping)。

LevelDB有什么特点?

(1)key和value可以是字符串或者字节流;

(2)数据默认按key排列,有序存储;

画外音:调用方可以重载排序方法,以实现自定义排序。

(3)简单易用,基本操作只有3种:

  • Put(key, value)
  • Get(key)
  • Delete(key)

(4)提供原子批量修改接口;

(5)支持数据快照;

(6)支持数据自动压缩;画外音:使用的是snappy压缩算法。

(7)开源,文档很详尽,Google出品很可靠;

LevelDB有什么局限?

  • LevelDB不是一个SQL数据库,没有关系型的存储模型,不支持SQL语句,不支持索引;
  • 同时只能有一个进程(当然,这个进程可以是多线程的)访问一个特定的数据库;
  • LevelDB只是一个lib库,没有实现什么client-server网络通讯什么的,当然用户可以自己将lib包装一层,实现自己的server;

LevelDB的性能如何?

内存缓存的特点就是快。

Google也进行了一系列测试:测试库共100w行记录,每条记录16字节的key,100字节的value,压缩后的value大概50字节。

写性能

  • 顺序写:平均每次操作耗时1.765微秒,即支持每秒大概55w次顺序写操作;
  • 顺序写+每次都刷盘:平均每次操作耗时268.409微妙,即支持每秒大概3700次的刷盘写操作;
  • 随机写:平均每次操作耗时2.460微秒,即支持每秒大概40w次随机写操作;
  • 更新写:平均每次操作耗时2.380微秒,性能和随机写差不多;

读性能

  • 随机读:平均每次操作耗时16.677微秒,即支持每秒大概6w次随机读操作;
  • 顺序读:平均每次操作耗时0.476微秒,即支持每秒大概210w次顺序读操作;
  • 逆序读:平均每次操作耗时0.724微秒,即支持每秒大概130w次逆序读操作;

上述性能都是在没有打开“压缩”功能下的结果,如果打开“压缩”选项,性能会有所提升。

画外音:Google非常诚实的提到,由于100w行的数据量很小,这些数据是能够完全放入内存。

【本文为51CTO专栏作者“58沈剑”原创稿件,转载请联系原作者】

戳这里,看该作者更多好文

【编辑推荐】

  1. 心里没点B树,怎能吃透数据库索引底层原理?
  2. 数据库允许空值(null),往往是悲剧的开始(1分钟系列)
  3. 通过自研数据库画像工具支持“去O”评估
  4. 数据库软件架构,到底要设计些什么?
【责任编辑:赵宁宁 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢
菲律宾太阳娱乐管理登入
申博138游戏登入 菲律宾申博77登入 申博138站登入 138申博亚洲登入 菲律宾太阳娱乐游戏登入 申博怎么代理
申博怎么玩不了 申博官网开户登入不了 太阳城申博登入 申博太阳城游戏 菲律宾申博怎么充值登入 申博免费开户官网登入
菲律宾太阳网址 www.66sbc.com 申博手机下载版登入 申博138官网登入 www.360msc.com 申博免费开户官网登入
金太阳国际娱乐网址 菲律宾申博在线网上 申博138真人娱乐登入 太阳城娱乐138申博登入 菲律宾申博太阳城登入 申博在线手机下载
百度