摘要:
集合对象的编码可以是 intset 或者 hashtable 。 intset 编码的集合对象使用整数集合作为底层实现, 集合对象包含的所有元素都被保存在整数集合里面。 举个例子, 以下代码将创建一个如图 8-12 所示的 intset 编码集合对象: redis> SADD numbers 1 3 阅读全文
posted @ 2020-12-22 21:19
Tracydzf
阅读(77)
评论(0)
推荐(0)
摘要:
哈希对象的编码可以是 ziplist 或者 hashtable 。 ziplist 编码的哈希对象使用压缩列表作为底层实现, 每当有新的键值对要加入到哈希对象时, 程序会先将保存了键的压缩列表节点推入到压缩列表表尾, 然后再将保存了值的压缩列表节点推入到压缩列表表尾, 因此: 保存了同一键值对的两个 阅读全文
posted @ 2020-12-22 20:47
Tracydzf
阅读(123)
评论(0)
推荐(0)
摘要:
列表对象的编码可以是 ziplist 或者 linkedlist 。 ziplist 编码的列表对象使用压缩列表作为底层实现, 每个压缩列表节点(entry)保存了一个列表元素。 举个例子, 如果我们执行以下 RPUSH 命令, 那么服务器将创建一个列表对象作为 numbers 键的值: redis 阅读全文
posted @ 2020-12-22 18:01
Tracydzf
阅读(95)
评论(0)
推荐(0)
摘要:
字符串对象的编码可以是 int 、 raw 或者 embstr 。 如果一个字符串对象保存的是整数值, 并且这个整数值可以用 long 类型来表示, 那么字符串对象会将整数值保存在字符串对象结构的 ptr属性里面(将 void* 转换成 long ), 并将字符串对象的编码设置为 int 。 举个例 阅读全文
posted @ 2020-12-22 17:45
Tracydzf
阅读(64)
评论(0)
推荐(0)
摘要:
Redis 使用对象来表示数据库中的键和值, 每次当我们在 Redis 的数据库中新创建一个键值对时, 我们至少会创建两个对象, 一个对象用作键值对的键(键对象), 另一个对象用作键值对的值(值对象)。 举个例子, 以下 SET 命令在数据库中创建了一个新的键值对, 其中键值对的键是一个包含了字符串 阅读全文
posted @ 2020-12-22 16:49
Tracydzf
阅读(193)
评论(0)
推荐(0)
摘要:
对象 在前面的数个章节里, 我们陆续介绍了 Redis 用到的所有主要数据结构, 比如简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合, 等等。 Redis 并没有直接使用这些数据结构来实现键值对数据库, 而是基于这些数据结构创建了一个对象系统, 这个系统包含字符串对象、列表对象、哈希对 阅读全文
posted @ 2020-12-22 15:36
Tracydzf
阅读(141)
评论(0)
推荐(0)
摘要:
压缩列表 压缩列表(ziplist)是列表键和哈希键的底层实现之一。 当一个列表键只包含少量列表项, 并且每个列表项要么就是小整数值, 要么就是长度比较短的字符串, 那么 Redis 就会使用压缩列表来做列表键的底层实现。 比如说, 执行以下命令将创建一个压缩列表实现的列表键: redis> RPU 阅读全文
posted @ 2020-12-22 15:21
Tracydzf
阅读(352)
评论(0)
推荐(0)
摘要:
跳跃表是一种可以对有序链表进行近似二分查找的数据结构,redis 在两个地方用到了跳跃表,一个是实现有序集合,另一个是在集群节点中用作内部数据结构。 跳跃表 ( skiplist ) 是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 跳跃表支持平均O ( 阅读全文
posted @ 2020-12-22 15:11
Tracydzf
阅读(143)
评论(0)
推荐(0)
摘要:
跳跃表(skiplist)是一种有序数据结构, 它通过在每个节点中维持多个指向其他节点的指针, 从而达到快速访问节点的目的。 在大部分情况下, 跳跃表的效率可以和平衡树相媲美, 并且因为跳跃表的实现比平衡树要来得更为简单, 所以有不少程序都使用跳跃表来代替平衡树。 Redis 使用跳跃表作为有序集合 阅读全文
posted @ 2020-12-22 14:37
Tracydzf
阅读(142)
评论(0)
推荐(0)
摘要:
当有两个或以上数量的键被分配到了哈希表数组的同一个索引上面时, 我们称这些键发生了冲突(collision)。 Redis 的哈希表使用链地址法(separate chaining)来解决键冲突: 每个哈希表节点都有一个 next 指针, 多个哈希表节点可以用 next 指针构成一个单向链表, 被分 阅读全文
posted @ 2020-12-22 14:17
Tracydzf
阅读(404)
评论(0)
推荐(0)
浙公网安备 33010602011771号