Redis内部编码

栏目: 数据库 · 发布时间: 6年前

内容简介:前文已经学习了Redis的基本数据结构,那么数据结构背后的存储类型又是什么呢,下图总结了Redis的内部编码从图中可以看出每一种数据结构都对应着多个内部编码,其中肯定存在着类型的转换,下面逐一来看下类型内部编码的处理。

前文已经学习了 Redis 的基本数据结构,那么数据结构背后的存储类型又是什么呢,下图总结了Redis的内部编码

Redis内部编码

从图中可以看出每一种数据结构都对应着多个内部编码,其中肯定存在着类型的转换,下面逐一来看下类型内部编码的处理。

String

字符串类型的内部编码有3种:

  • int:8个字节的长整型。

  • embstr:小于等于39个字节的字符串。

  • raw:大于39个字节的字符串。

Redis会根据当前值的类型和长度决定使用哪种内部编码实现。

hash

哈希类型的内部编码有两种:

  • ziplist(压缩列表):

    条件:

    1. 当哈希类型元素个数小于hash-max-ziplist-entries配置(默认512个)
    2. 所有值都小于hash-max-ziplist-value配置(默认64字节)
  • hashtable(哈希表):当哈希类型无法满足ziplist的条件时使用hashtable

Redis使用ziplist作为哈希的内部实现,ziplist使用更加紧凑的结构实现多个元素的连续存储,所以在节省内存方面比hashtable更加优秀。

使用hashtable作为哈希的内部实现,ziplist的读写效率会下降,而hashtable的读写时间复杂度为O(1)。

list

列表类型的内部编码有两种。

  • ziplist(压缩列表):当列表的元素个数小于list-max-ziplist-entries配置(默认512个),同时列表中每个元素的值都小于list-max-ziplist-value配置时(默认64字节),Redis会选用ziplist来作为列表的内部实现来减少内存的使用。
  • inkedlist(链表):当列表类型无法满足ziplist的条件时,Redis会使用linkedlist作为列表的内部实现。

提示:

Redis3.2版本提供了quicklist内部编码,简单地说它是以一个ziplist为节点的linkedlist,它结合了ziplist和linkedlist两者的优势,为列表类型提供了一种更为优秀的内部编码实现,它的设计原理可以参考Redis的另一个作者Matt Stancliff的博客: https://matt.sh/redis-quicklist

set

集合类型的内部编码有两种:

  • intset(整数集合):当集合中的元素都是整数且元素个数小于set-max-intset-entries配置(默认512个)时,Redis会选用intset来作为集合的内部实现,从而减少内存的使用。
  • hashtable(哈希表):当集合类型无法满足intset的条件时,Redis会使用hashtable作为集合的内部实现。

zset

有序集合类型的内部编码有两种:

  • ziplist(压缩列表):当有序集合的元素个数小于zset-max-ziplist-entries配置(默认128个),同时每个元素的值都小于zset-max-ziplist-value配置(默认64字节)时,Redis会用ziplist来作为有序集合的内部实现,ziplist可以有效减少内存的使用。

  • skiplist(跳跃表):当ziplist条件不满足时,有序集合会使用skiplist作为内部实现,因为此时ziplist的读写效率会下降。

付磊; 张益军. Redis开发与运维 (数据库技术丛书). 机械工业出版社.


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

大教堂与集市

大教堂与集市

[美] Eric S. Raymond / 卫剑钒 / 机械工业出版社 / 2014-5 / 59.00元

当代软件技术领域最重要的著作,中文版首次出版! 《大教堂与集市》是开源运动的《圣经》,颠覆了传统的软件开发思路,影响了整个软件开发领域。作者Eric S. Raymond是开源运动的旗手、黑客文化第一理论家,他讲述了开源运动中惊心动魄的故事,提出了大量充满智慧的观念和经过检验的知识,给所有软件开发人员带来启迪。本书囊括了作者最著名的“五部曲”,并经过作者的全面更新,增加了大量注释,提高了可读......一起来看看 《大教堂与集市》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

在线进制转换器
在线进制转换器

各进制数互转换器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具