Redis中set数据结构它是由intset或者hashtable构成的今天我们就来讲一下intset
整数集合(intset)呢, 是一个有序的存储数据的结构
它有以下优点

  • 1.整数集合中, 元素按照值的大小由小到大排列;
  • 2.可以保存int16_t, int32_t, int64_t类型的数据
  • 3.存储数据时, 可以保证其内部不出现重复的数据
    当一个set只包含整数元素, 并且元素不多的时候, Redis就可能使用intset来实现set

intset底层实现

typedef struct intset {uint32_t encoding; // 编码类型uint32_t length;   // 元素数量int8_t contents[]; // 元素数组
}intset;

但有一点需要注意

intset的集合升级与降级
比如一开始set存储的是int16_t类型的数据, 但是当我们添加了一个int32_t类项的数据时,就需要操作升级

  1. 根据新元素的类型, 扩展底层元素的空间, 并为新元素分配空间
  2. 将现有的元素都转为新的元素类型, 并存储在正确的空间上面
  3. 将新元素添加进数组内
    最后集合是不支持降级的哦

Redis之intset(整数集合)相关推荐

  1. Redis学习之intset整数集合源码分析

    1.整数集合:整数的集合,升序排序,无重复元素 2.整数集合intset是集合键的底层实现之一,当一个集合只包含整数值的元素,并且这个集合的元素数量不多时,redis会使用整数集合作为集合键的底层实现 ...

  2. Redis实现之整数集合

    整数集合 整数集合(insert)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现.举个栗子,如果我们创建一个只包含五个 ...

  3. redis——数据结构(整数集合,压缩列表)

    4.整数集合 整数集合(intset)是 Redis 用于保存整数值的集合抽象数据结构, 可以保存 int16_t . int32_t . int64_t 的整数值, 并且保证集合中不会出现重复元素. ...

  4. 整数集合intset

    整数集合的定义 Redis 中的整数集合 intset 是用来保存多个不重复的整数值且有序的集合抽象数据结构,可以保存类型为 int16-t .int32-t 或者 int64-t 的整数值.它是实现 ...

  5. redis之intset

    今天来学习一下redis里面的整数集合. typedef struct intset { //结构体大小为8uint32_t encoding; //编码方式uint32_t length; //数组 ...

  6. Redis之整数集合intset

    intset是Redis集合的底层实现之一,当存储整数集合并且数据量较小的情况下Redis会使用intset作为set的底层实现.当数据量较大或者集合元素为字符串时则会使用dict实现set. int ...

  7. Redis数据结构——整数集合-intset

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

  8. Redis源码剖析(十三)整数集合

    Redis提供一种叫整数集合的数据结构,当数据中只包含整数,并且数据数量不多时,Redis便会采用整数集合存储 Redis保证整数集合有以下几个特性 所含元素全是整数,且不重复 内部元素有序,通常是会 ...

  9. Redis的设计与实现之整数集合和压缩列表

    整数集合(intset) 整数集合概念 整数集合是一个集合(set) 整数集合里只包含整数,并且集合元素不能太多 整数集合不会有重复的元素(有重复元素集合就没意义了) 整数集合的实现方式 typede ...

最新文章

  1. Scan Chain的原理与实现(实践)-top down flow
  2. Distributed Transaction Coordinator 服务因 3221229584 (0xC0001010) 服务性错误而停止
  3. STM32(Cortex-M3)开发,RVDS和MDK谁优谁劣?
  4. 【机器学习入门】机器学习基础核心算法:贝叶斯分类!(附西瓜书案例及代码实现)...
  5. Samba安装配置用于虚拟机共享文件_很详细
  6. 数据结构:(翻转二叉树) 若二叉树采用二叉链表作存储结构,要交换其所有分支结点的左右子树的位置,采用()遍历方法最合适
  7. maven 多项目搭建
  8. 程序员笔记(知识)管理的一点经验
  9. 关于二分查找 使用 lower_bound
  10. 浪潮gs开发平台学习---平台快速开发入门
  11. 【基础教程】基于matlab疫情防护动图制作【含Matlab源码 028期】
  12. 挑战程序设计竞赛:三角形
  13. RTX2009管理器服务运行状态空白
  14. 中国港口年鉴(2000-2020年)
  15. rainmeter 皮肤_Rainmeter入门指南:在桌面上显示系统统计信息
  16. mac打开nh文件-cajviewer.dmg
  17. Win10系统开机后任务栏卡死解决方法
  18. Splay Tree伸展树
  19. 数组中的元素转成Number或者String---数组map方法
  20. rhce考试linux环境,RHCSA考试题及RHCE考试题

热门文章

  1. 一致性哈希算法的基本原理
  2. tensorflow 就该这么学--1
  3. 深度学习核心技术精讲100篇(六十四)-特征选择原理及应用实战案例
  4. 深度学习核心技术精讲100篇(五十五)- 基于OpenCV实现棋盘图像识别
  5. 运筹学(最优化理论)学习笔记 | 分支定界法
  6. HDFS--Hadoop分布式文件系统
  7. 数据挖掘系列(5)使用mahout做海量数据关联规则挖掘
  8. 基于stm32f405控制三相无刷电机例程_ST SSC 频道 | 基于ST STM32F302R8T6 电机空气压缩机方案...
  9. 数据分析系列:绘制折线图(matplotlib)2
  10. Youtube推荐系统是如何挖掘用户内心另一面的