图解redis对象(hash 集合 有序集合)

追求适度,才能走向成功;人在顶峰,迈步就是下坡;身在低谷,抬足既是登高;弦,绷得太紧会断;人,思虑过度会疯;水至清无鱼,人至真无友,山至高无树;适度,不是中庸,而是一种明智的生活态度。

导读:本篇文章讲解 图解redis对象(hash 集合 有序集合),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

哈希表

哈希对象的编码可以是ziplist或者hashtable

条件

·哈希对象保存的所有键值对的键和值的字符串长度都小于64字 节;

·哈希对象保存的键值对数量小于512个;不能满足这两个条件的哈 希对象需要使用hashtable编码

ziplist

ziplist编码的哈希对象使用压缩列表作为底层实现,每当有新的键 值对要加入到哈希对象时,程序会先将保存了键的压缩列表节点推入到 压缩列表表尾,然后再将保存了值的压缩列表节点推入到压缩列表表尾,

因此:

·保存了同一键值对的两个节点总是紧挨在一起,保存键的节点在前,保存值的节点在后;

·先添加到哈希对象中的键值对会被放在压缩列表的表头方向,而后来添加到哈希对象中的键值对会被放在压缩列表的表尾方向。

举个例子,如果我们执行以下HSET命令,那么服务器将创建一个 列表对象作为profile键的值

redis> HSET profile name "Tom"
(integer) 1
redis> HSET profile age 25
(integer) 1
redis> HSET profile career "Programmer"
(integer) 1

图例:

图解redis对象(hash 集合 有序集合)

 图解redis对象(hash 集合 有序集合)

 hashtable

字典的每个键都是一个字符串对象,对象中保存了键值对的键;

·字典的每个值都是一个字符串对象,对象中保存了键值对的值

举个例子 

图解redis对象(hash 集合 有序集合)

set

集合对象的编码可以是intset或者hashtable

条件

集合对象保存的所有元素都是整数值;

·集合对象保存的元素数量不超过512个。 不能满足这两个条件的集合对象需要使用hashtable编码

intset

intset编码的集合对象使用整数集合作为底层实现,集合对象包含的 所有元素都被保存在整数集合里面

redis> SADD numbers 1 3 5
(integer) 3

图解redis对象(hash 集合 有序集合)

 hashtable,

hashtable编码的集合对象使用字典作为底层实现,字典 的每个键都是一个字符串对象,每个字符串对象包含了一个集合元素, 而字典的值则全部被设置为NULL

redis> SAD Dfruits "apple" "banana" "cherry"
(integer)3

图解redis对象(hash 集合 有序集合)

 sort set

有序集合的编码可以是ziplist或者skiplist

条件

有序集合保存的元素数量小于128个; ·

有序集合保存的所有元素成员的长度都小于64字节;

不能满足以上两个条件的有序集合对象将使用skiplist编码

ziplist

ziplist编码的压缩列表对象使用压缩列表作为底层实现,每个集合 元素使用两个紧挨在一起的压缩列表节点来保存,第一个节点保存元素 的成员(member),而第二个元素则保存元素的分值(score)

压缩列表内的集合元素按分值从小到大进行排序,分值较小的元素被放置在靠近表头的方向,

而分值较大的元素则被放置在靠近表尾的方向

redis> ZADD price 8.5 apple 5.0 banana 6.0 cherry
(integer) 3

图解redis对象(hash 集合 有序集合)

 图解redis对象(hash 集合 有序集合)

skiplist

跳跃表节点的object属性保存了元素的成员,而跳跃表节点的score属性则保存了元素的分值。通过这个跳 跃表,程序可以对有序集合进行范围型操作,比如ZRANK、ZRANGE 等命令就是基于跳跃表API来实现的

如果前面price键创建的不是ziplist编码的有序集合对象,而是skiplist编码的有序集合对象,

那么这个有序集合对象将会是下图

图解redis对象(hash 集合 有序集合)

,而对象所使用的zset结构将会是下图所示的样子

 图解redis对象(hash 集合 有序集合)

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/129593.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!