美文网首页
《Redis设计与实现》第六章 整数集合 读书笔记

《Redis设计与实现》第六章 整数集合 读书笔记

作者: 半亩房顶 | 来源:发表于2019-05-05 20:31 被阅读0次

整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。

6.1 整数集合的实现

typedef struct intset{
  // 编码方式
  uint32_t encoding;
  // 集合包含的元素数量
  uint32_t length;
  // 保存元素的数组
  int8_t contents[];
} intset;

contents 是整数集合的底层实现,每个元素都是contents数组的一个数组项,其中数字从小到大排列,且不包含重复项。虽然声明是int8_t,但是其真实类型是根据encoding属性的值决定的。
length 记录了整数集合包含的元素数量,也即contents数组的长度。
encoding 保存元素的类型,int16_t(INTSET_ENC_INT16)、int32_t、int64_t

6.2 升级

升级过程:

  • 1、重新分配空间
  • 2、根据原有元素顺序,从后往前放置旧元素到新位置
  • 3、放置新元素
    易得:插入元素时间复杂度为O(n)

能引发升级的,要么大于所有现有元素,要么小于所有现有元素(负数),所以,新元素位置要么是最后一个要么是第一个

6.3 升级的好处

  • 提升灵活性
  • 节约内存

6.4 降级

整数集合不支持降级,其实应该是跟PHP hashtable不提供降级逻辑一样

  • 成本相对成果来说较高
  • 降级需求并不大

6.5 整数集合API

6.6 重点回顾

重点回顾

以上


欢迎大家关注我的公众号


半亩房顶

相关文章

  • redis数据结构之整数集合

    参考文献:黄健宏《Redis设计与实现》 用处 整数集合是集合键的底层实现之一 当一个集合中只包含整数值元素且元素...

  • 《redis设计与实现》 读书笔记

    《redis设计与实现》 读书笔记 《redis设计与实现》 作者:黄健宏 一、前言 什么是redis:Redis...

  • 6.整数集合

    整数集合 1. 整数集合的实现 整数集合是Redis用于保存整数值的集合抽象数据结构,它可以保存类型为int16_...

  • 《Redis设计与实现》第六章 整数集合 读书笔记

    整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redi...

  • 第 6 章 整数集合

    整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的数量不多时,Redis 就会使用整数集合...

  • 6 整数集合

    整数集合(intset)是集合键的底层实现之一,当一个集合值包含整数值元素,并且元素不多,Redis就会使用整数集...

  • Redis数据结构学习-整数集合(五)

    整数集合(intset) 是集合键的底层实现之一、当一个集合只包含整数值元素, 且集合元素数量不多时、Redis就...

  • 6.整数集合

    整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集...

  • 第六章 整数集合

    整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集...

  • Redis数据结构——整数集合

    前言 整数集合(intset)并不是一个基础的数据结构,而是Redis自己设计的一种存储结构,是集合键的底层实现之...

网友评论

      本文标题:《Redis设计与实现》第六章 整数集合 读书笔记

      本文链接:https://www.haomeiwen.com/subject/minhnqtx.html