图解Redis整数集合

一、图示的基本单位

图1-图示基本单位.png

二、整数集合的数据结构

  1. 整数集合由三部分组成,分别是:编码、元素数量、元素

    • 编码,有三种值,INT16、INT32、INT64。表示元素的内存大小和值域
    • 元素数量,记录集合中元素的数量
    • 元素,存放一个一个的数字
  2. 集合中只能存在一种类型的元素。如编码为INT16,那么元素都是2字节长并且在[INT16_MIN,INT16_MAX]之间的整数。如编码为INT64,那么元素都是8字节长并且在[INT64_MIN,INT64_MAX]之间的整数

  3. 整数按从小到大的顺序存储

图2-数据结构.png

三、添加元素
元素都是INT16长度(2字节),跳过元素只要在当前地址+2字节就到达下一个元素的首地址了。其他编码类型同理,INT32(4字节),INT64(8字节)


图3-元素添加.png

四、编码升级

  1. 编码升级一定发生在添加元素时,redis2.6中没有编码降级操作。
  2. 编码升级的添加操作,新值一定添加在头或尾元素。因为升级代表新值超出当前编码的最大值或最小值,所以新值一定大于集合当前的最大值或者小于集合当前最小值
图4-编码升级.png

五、查找元素

  1. 按值查找节点


    图5-值查找.png
  2. 按索引查找节点
    根据编码获取每个节点的长度,(索引 * 每个节点的长度)就是目标节点

六、删除元素

图6-删除元素.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 正文 整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,R...
    于情于你阅读 1,355评论 0 2
  • 一、整数集合 整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且元素数量不多,Red...
    稻壳_be03阅读 4,149评论 0 0
  • 整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redi...
    HRADPX阅读 3,624评论 0 0
  • 整数集合 1. 整数集合的实现 整数集合是Redis用于保存整数值的集合抽象数据结构,它可以保存类型为int16_...
    xMustang阅读 3,508评论 0 0
  • Noche de Espera Paulina:Hola, Pedro,el sábado pa...
    言寺小姐阅读 3,405评论 1 1

友情链接更多精彩内容