
NoSQL
Bob Liu
这个作者很懒,什么都没留下…
展开
-
Redis深度解析系列文章
在研究Redis过程,收集到的比较好的文章,整理到这里,方便后续查阅内存模型Redis内存模型技术面试面试中关于Redis的问题看这篇就够了原创 2020-07-08 23:01:50 · 684 阅读 · 0 评论 -
LevelDB C++教程: 如何打开和关闭数据库
简介leveldb提供持久键值存储功能。键和值是任意字节数组。根据用户指定的比较函数,在键值存储区内对键进行排序。本文将介绍leveldb的打开和关闭数据的基本操作,为后面的键值存储操作做准备。代码示例下面的代码功能实现了完整的打开和关闭数据库的功能,下面会对代码来进行逐一讲解:#include <iostream>#include <cassert>#inc...原创 2018-12-13 22:15:53 · 1957 阅读 · 0 评论 -
LevelDB C++教程: Linux下编译与安装
简介leveldb是由google开发的键值存储库,它提供了由字符串键到字符串值的映射,本文介绍如何在Linux下编译安装leveldb。源码下载使用git可以下载最新的leveldb的源码,目前最新的发布版本为v1.20。git clone https://github.com/google/leveldb.git编译安装leveldb支持cmake,可以通过下列的命令非常容易的进...原创 2018-12-10 11:40:48 · 1513 阅读 · 3 评论 -
LevelDB C++教程: Linux系统中安装snappy
snappy简介Snappy(以前称Zippy)是Google基于LZ77的思路用C++语言编写的快速数据压缩与解压程序库,并在2011年开源。它的目标并非最大压缩率或与其他压缩程序库的兼容性,而是非常高的速度和合理的压缩率。使用一个运行在64位模式下的酷睿i7处理器的单个核心,压缩速度250 MB/s,解压速度500 MB/s。压缩率比gzip低20-100%。Snappy广泛应用在Goog...原创 2018-12-10 13:17:06 · 2020 阅读 · 0 评论 -
LevelDB源码分析:理解Slice实现 - 高效的LevelDB参数对象
简介Slice在LevelDB中作为高效的参数对象而设计,你可以使用任何数据类型来创建leveldb::Slice对象,而且这些对象在LevelDB的很多接口中作为参数来进行传递。本文将介绍LevelDB重要的参数对象Slice的实现,涉及的LevelDB的版本为1.20。Slice实现Slice类的实现在include/leveldb/slice.h中:class Slice { pu...原创 2018-12-15 23:35:52 · 1690 阅读 · 0 评论 -
LevelDB专栏文章索引
简介本文为作者关于LevelDB的系列文章做的索引,方便阅读。LevelDB C++教程1. LevelDB: Linux下编译与安装2. LevelDB: Linux系统中安装snappy3. LevelDB: 如何打开和关闭数据库LevelDB源码分析1. LevelDB源码分析:理解Slice实现 - 高效的LevelDB参数对象...原创 2018-12-15 23:49:11 · 550 阅读 · 0 评论 -
Redis源码分析:字典实现(二)
本文分析的是Redis的版本为4.0.11。接口实现本文继续分析字典的接口实现。添加在分析键值对添加接口实现前,先来分析一下_dictKeyIndex()函数实现。该函数根据提供key、哈希值来获取哈希表的插入位置。如果该key在哈希表中已存在,可以通过existing参数返回dictEntry地址,并将返回值设置为-1,表示key已存在。如果dict正在进行重新哈希的过程,需要在新旧两个...原创 2019-07-08 11:50:59 · 366 阅读 · 1 评论 -
Redis源码分析:字典实现(-)
本文分析的是Redis的版本为4.0.11。字典(dictionary)键值数据库(key-value store)是字典的数据结构,键(key)和值(value)进行关联,形成键值对,所有数据库的操作都是通过主键(primary key)来实现的。除了用作表示数据库外,字典还是Redis底层哈希键的底层实现。字典结构定义字典结构定义位于dict.h文件中。先来看一下字典结构的定义:/*...原创 2019-07-03 20:02:56 · 424 阅读 · 0 评论