加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

深入相识一下Redis的内存模子!

发布时间:2019-03-11 18:42:11 所属栏目:编程 来源:编程迷思
导读:一、媒介 Redis是今朝最火爆的内存数据库之一,通过在内存中读写数据,大大进步了读写速率,可以说Redis是实现网站高并发不行或缺的一部门。 我们行使Redis时,会打仗Redis的5种工具范例(字符串、哈希、列表、荟萃、有序荟萃),富厚的范例是Redis相对付M

整数集符实用于荟萃全部元素都是整数且荟萃元素数目较小的时辰,与哈希表对比,整数荟萃的上风在于齐集存储,节减空间;同时,固然对付元素的操纵伟大度也由O(n)变为了O(1),但因为荟萃数目较少,因此操纵的时刻并没有明明劣势。

(3)编码转换

只有同时满意下面两个前提时,荟萃才会行使整数荟萃:荟萃中元素数目小于512个;荟萃中全部元素都是整数值。假若有一个前提不满意,则行使哈希表;且编码只也许由整数荟萃转化为哈希表,反偏向则不行能。

下图展示了荟萃编码转换的特点:

5、有序荟萃

(1)轮廓

有序荟萃与荟萃一样,元素都不能一再;但与荟萃差异的是,有序荟萃中的元素是有次序的。与列表行使索引下标作为排序依据差异,有序荟萃为每个元素配置一个分数(score)作为排序依据。

(2)内部编码

有序荟萃的内部编码可所以压缩列表(ziplist)或跳跃表(skiplist)。ziplist在列表和哈希中都有行使,前面已经讲过,这里略过不提。

跳跃表是一种有序数据布局,通过在每个节点中维持多个指向其他节点的指针,从而到达快速会见节点的目标。除了跳跃表,实现有序数据布局的另一种典范实现是均衡树;大大都环境下,跳跃表的服从可以僻静衡树媲美,且跳跃表实现比均衡树简朴许多,因此redis中选用跳跃表取代均衡树。跳跃表支持均匀O(logN)、最坏O(N)的伟大点举办节点查找,并支持次序操纵。Redis的跳跃表实现由zskiplist和zskiplistNode两个布局构成:前者用于生涯跳跃表信息(如头结点、尾节点、长度等),后者用于暗示跳跃表节点。详细布局相比拟力伟大,略。

(3)编码转换 

只有同时满意下面两个前提时,才会行使压缩列表:有序荟萃中元素数目小于128个;有序荟萃中全部成员长度都不敷64字节。假若有一个前提不满意,则行使跳跃表;且编码只也许由压缩列表转化为跳跃表,反偏向则不行能。

下图展示了有序荟萃编码转换的特点:

六、应用举例

相识Redis的内存模子之后,下面通过几个例子声名其应用。

1、估算Redis内存行使量

要估算redis中的数据占有的内存巨细,必要对redis的内存模子有较量全面的相识,包罗前面先容的hashtable、sds、redisobject、各类工具范例的编码方法等。

下面以最简朴的字符串范例来举办声名。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读