Redis的底层数据结构-整数集合

技术Redis的底层数据结构-整数集合 Redis的底层数据结构-整数集合整数集合(intset)是Redis用于保存整数值的集合抽象数据类型,它可以保存类型为int16_t、int32_t 或者int

Redis-整数集的底层数据结构

整数集是Redis用来存储整数值的集合抽象数据类型。它可以存储int16_t、int32_t或int64_t类型的整数值,并确保集合中不会有重复的元素。

定义如下:

typedef结构intset{

//编码方法

uint32_t编码;

//集合中包含的元素数量

uint32_t长度;

//保存元素数组

int8_t目录[];

} intset

整数集的每个元素都是内容数组的一个数据项,按从小到大的顺序排列,不包含任何重复项。

length属性记录内容数组的大小。

需要注意的是,虽然contents数组被声明为int8_t类型,但实际上contents数组并不保存任何int8_t类型的值,它的实类型是由编码决定的。

、升级

当新添加的元素类型比原集合元素类型长时,需要升级整数集合,将新元素放入整数集合中。具体步骤:

1.根据新元素类型,扩展整数集底部数组的大小,为新元素分配空间。

2.将基础数组的所有现有元素转换为与新元素相同类型的元素,并将转换后的元素放在正确的位置。在放置过程中,保持整个元素的顺序有序。

3.向整数集中添加新元素(确保顺序)。

升级可以大大节省内存。

、降级

整数不支持降级操作。一旦阵列升级,代码将保持升级状态。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/81997.html

(0)

相关推荐

  • 站内链接有什么作用

    技术站内链接有什么作用这篇文章主要介绍“站内链接有什么作用”,在日常操作中,相信很多人在站内链接有什么作用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”站内链接有什么作用”的疑惑有所帮助!

    攻略 2021年11月2日
  • Docker原理、架构与应用是什么

    技术Docker原理、架构与应用是什么本篇内容主要讲解“Docker原理、架构与应用是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Docker原理、架构与应用是什么”吧

    攻略 2021年12月13日
  • dubbo服务无法调用的原因(dubbo服务已发布却无法调用)

    技术dubbo调不到dubbo服务怎么办这篇文章主要讲解了“dubbo调不到dubbo服务怎么办”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“dubbo调不到dubbo服

    攻略 2021年12月15日
  • 如何安装openstack的基础组件

    技术如何安装openstack的基础组件这篇文章主要介绍如何安装openstack的基础组件,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!将安装一些关于openstack的基础组件,例如:数据库、

    攻略 2021年11月18日
  • Golang和Lua相遇会擦出什么火花

    技术Golang和Lua相遇会擦出什么火花这篇文章主要介绍“Golang和Lua相遇会擦出什么火花”,在日常操作中,相信很多人在Golang和Lua相遇会擦出什么火花问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操

    攻略 2021年11月9日
  • mysql社区版和企业版的区别有哪些

    技术mysql社区版和企业版的区别有哪些这篇文章主要讲解了“mysql社区版和企业版的区别有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql社区版和企业版的区

    攻略 2021年12月2日