- 博客(14)
- 收藏
- 关注
原创 Redis源码剖析和注释(十二)--- 集合类型键实现(t_set)
Redis 集合类型键实现(t_set)1. 集合命令介绍redis中所有的集合命令如下:Redis集合命令详解 序号 命令 说明 1 SADD key member1 [member2] 将一个或多个成员添加到集合 2 SCARD key 获取集合中的成员数 3 SDIFF key1 [key2] 减去多个集合 4 SDIFFSTORE des
2017-04-28 21:41:47 3492
原创 Redis源码剖析和注释(十一)--- 哈希键命令的实现(t_hash)
Redis 哈希键命令实现(t_hash)1. 哈希命令介绍Redis 所有哈希命令如下表所示:Redis 哈希命令详解 序号 命令及描述 1 HDEL key field2 [field2]:删除一个或多个哈希表字段 2 HEXISTS key field:查看哈希表 key 中,指定的字段是否存在。 3 HGET key field:获取存储在哈希表中指定字段的值。
2017-04-27 13:31:52 3648
原创 Redis源码剖析和注释(十)--- 列表键命令实现(t_list)
Redis 列表类型命令实现(t_list)1.列表类型命令介绍redis中所有列表类型的命令如下:列表类型命令详解 序号 命令及描述 1 BLPOP key1 [key2 ] timeout:移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。 2 BRPOP key1 [key2 ] timeout:移出并获取列表的最后一个元素, 如果
2017-04-23 22:05:20 3181
原创 Redis源码剖析和注释(九)--- 字符串命令的实现(t_string)
Redis 字符串键的实现(t_string)1. 字符串命令介绍redis中的所有字符串命令如下:字符串类型命令详解 序号 命令及描述 1 SET key value:设置指定 key 的值 2 GET key: 获取指定 key 的值。 3 GETRANGE key start end: 返回 key 中字符串值的子字符 4 GETSET key value
2017-04-21 16:02:57 3640
原创 Redis源码剖析和注释(八)--- 对象系统(redisObject)
Redis 对象系统1. 介绍redis中基于双端链表、简单动态字符串(sds)、字典、跳跃表、整数集合、压缩列表、快速列表等等数据结构实现了一个对象系统,并且实现了5种不同的对象,每种对象都使用了至少一种前面的数据结构,优化对象在不同场合下的使用效率。双端链表源码剖析和注释简单动态字符串(SDS)源码剖析和注释字典结构源码剖析和注释跳跃表源码剖析和注释整数集合源码剖析和注释压缩列表源码
2017-04-20 12:58:40 6924 1
原创 Redis源码剖析和注释(七)--- 快速列表(quicklist)
Redis 快速列表(quicklist)1. 介绍quicklist结构是在redis 3.2版本中新加的数据结构,用在列表的底层实现。通过列表键查看一下:redis 列表键命令详解127.0.0.1:6379> RPUSH list 1 2 5 1000"redis" "quicklist"(integer) 127.0.0.1:6379> OBJECT ENCODING list"qui
2017-04-18 16:02:04 11926 4
原创 Redis源码剖析和注释(六)--- 压缩列表(ziplist)
Redis 压缩列表(ziplist)1. 介绍压缩列表(ziplist)是哈希键的底层实现之一。它是经过特殊编码的双向链表,和整数集合(intset)一样,是为了提高内存的存储效率而设计的。当保存的对象是小整数值,或者是长度较短的字符串,那么redis就会使用压缩列表来作为哈希键的实现。127.0.0.1:6379> HMSET hash name mike age 28 sex maleOK
2017-04-14 23:08:21 7826 3
原创 Redis源码剖析和注释(五)--- 整数集合(intset)
Redis 整数集合(intset)1. 介绍整数集合(intset)是集合键底层实现之一。集合键另一实现是值为空的散列表(hash table),虽然使用散列表对集合的加入删除元素,判断元素是否存在等等操作时间复杂度为O(1),但是当存储的元素是整型且元素数目较少时,如果使用散列表存储,就会比较浪费内存,因此整数集合(intset)类型因为节约内存就存在。散列表的实现在redis集合键命令:red
2017-04-12 17:58:04 3290
原创 Redis 学习笔记(十一)基数统计(HyperLogLog)
Redis 学习笔记(十一)基数统计(HyperLogLog)1. 介绍HyperLogLog命令是redis在2.8版本中加入的,Redis中HyperLogLog是用来做基数统计的。HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的,因此每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2642^{64}
2017-04-11 10:24:41 5290 1
原创 Redis源码剖析和注释(四)--- 跳跃表(skiplist)
Redis 跳跃表(skiplist)1. 跳跃表(skiplist)介绍定义:跳跃表是一个有序链表,其中每个节点包含不定数量的链接,节点中的第i个链接构成的单向链表跳过含有少于i个链接的节点。跳跃表支持平均O(logN),最坏O(N)复杂度的节点查找,大部分情况下,跳跃表的效率可以和平衡树相媲美。跳跃表在redis中当数据较多时作为有序集合键的实现方式之一。接下来,还是举个有序集合键的例子
2017-04-10 23:27:20 9398 8
原创 Redis源码剖析和注释(三)--- Redis 字典结构
Redis 字典结构1. 介绍字典又称为符号表(symbol table)、关联数组(associative array)或映射(map),是一种用于保存键值对(key-value pair)的抽象数据结构。例如:redis中的所有key到value的映射,就是通过字典结构维护,还有hash类型的键值。通过redis中的命令感受一下哈希键。127.0.0.1:6379> HSET user name
2017-04-08 21:18:06 5570 2
原创 Redis源码剖析和注释(二)--- 简单动态字符串
Redis 简单动态字符串1.介绍Redis兼容传统的C语言字符串类型,但没有直接使用C语言的传统的字符串(以’\0’结尾的字符数组)表示,而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的对象。简单动态字符串在Redis数据库中应用很广泛,例如:键值对在底层就是由SDS实现的。在redis种,有一种数据类型叫string类型,而string类型简单的说就是
2017-04-06 16:39:29 6382 3
原创 Redis源码剖析和注释(一)---链表结构
Redis源码剖析—链表结构1. redis中的链表在redis中链表的应用非常广泛,例如列表键的底层实现之一就是链表。而且,在redis中的链表结构被实现成为双向链表,因此,在头部和尾部进行的操作就会非常快。通过列表键的命令感受一下双向链表:列表键命令详解127.0.0.1:6379> LPUSH list a b c //依次在链表头部插入a、b、c(integer) 3127.0.0
2017-04-04 22:08:19 11395 4
原创 redis C语言客户端---hiredis的安装与使用
hiredis的安装与使用1. 介绍hiredis是redis数据库的简约C客户端库,是redis官方的C语言客户端,支持所有命令(command set),管道(pipelining),时间驱动编程(event driven programming)。github地址:https://github.com/redis/hiredis2. redis的安装和配置wget http://downloa
2017-04-03 12:18:18 13022
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人