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)

相关推荐

  • leetcode排序链表怎么用(leetcode单链表反转)

    技术LeetCode如何k个一组翻转链表这篇文章给大家分享的是有关LeetCode如何k个一组翻转链表的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 题目描述:给你一个链表,每 k 个节点一组

    攻略 2021年12月15日
  • HiveMQ是什么

    技术HiveMQ是什么小编给大家分享一下HiveMQ是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!简单介绍HiveMQ是企业级MQTT

    攻略 2021年12月10日
  • 1大写怎么写,英文1到10大写怎么写

    技术1大写怎么写,英文1到10大写怎么写英文1到10大写是:ONE1大写怎么写、TWO、THREE、FOUR、FIVE、SIX、SEVEN、EIGHT、NIGHT、TEN单词解析:1、ONE 读音:英 [wʌn] 美

    生活 2021年10月25日
  • 如何进行web.py数据库入门

    技术如何进行web.py数据库入门如何进行web.py数据库入门,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。web.py是一个非常精巧的web框架,不

    攻略 2021年12月4日
  • 【go笔记】使用标准库flag解析命令行参数

    技术【go笔记】使用标准库flag解析命令行参数 【go笔记】使用标准库flag解析命令行参数使用标准库flag解析命令行参数前言
    Go语言标准库中提供了一个包flag可以解析命令行参数。
    示例代码:文

    礼包 2021年12月13日
  • java中基于线层池Spring-quartz如何实现动态增删除改和暂停恢复定时任务

    技术java中基于线层池Spring-quartz如何实现动态增删除改和暂停恢复定时任务这篇文章主要讲解了“java中基于线层池Spring-quartz如何实现动态增删除改和暂停恢复定时任务”,文中的讲解内容简单清晰,

    攻略 2021年11月15日