Redis之intset(整数集合)
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类项的数据时,就需要操作升级
- 根据新元素的类型, 扩展底层元素的空间, 并为新元素分配空间
- 将现有的元素都转为新的元素类型, 并存储在正确的空间上面
- 将新元素添加进数组内
最后集合是不支持降级的哦
Redis之intset(整数集合)相关推荐
- Redis学习之intset整数集合源码分析
1.整数集合:整数的集合,升序排序,无重复元素 2.整数集合intset是集合键的底层实现之一,当一个集合只包含整数值的元素,并且这个集合的元素数量不多时,redis会使用整数集合作为集合键的底层实现 ...
- Redis实现之整数集合
整数集合 整数集合(insert)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现.举个栗子,如果我们创建一个只包含五个 ...
- redis——数据结构(整数集合,压缩列表)
4.整数集合 整数集合(intset)是 Redis 用于保存整数值的集合抽象数据结构, 可以保存 int16_t . int32_t . int64_t 的整数值, 并且保证集合中不会出现重复元素. ...
- 整数集合intset
整数集合的定义 Redis 中的整数集合 intset 是用来保存多个不重复的整数值且有序的集合抽象数据结构,可以保存类型为 int16-t .int32-t 或者 int64-t 的整数值.它是实现 ...
- redis之intset
今天来学习一下redis里面的整数集合. typedef struct intset { //结构体大小为8uint32_t encoding; //编码方式uint32_t length; //数组 ...
- Redis之整数集合intset
intset是Redis集合的底层实现之一,当存储整数集合并且数据量较小的情况下Redis会使用intset作为set的底层实现.当数据量较大或者集合元素为字符串时则会使用dict实现set. int ...
- Redis数据结构——整数集合-intset
整数集合 整数集合是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现. 1.整数集合实现: 整数集合是redis用于保存整 ...
- Redis源码剖析(十三)整数集合
Redis提供一种叫整数集合的数据结构,当数据中只包含整数,并且数据数量不多时,Redis便会采用整数集合存储 Redis保证整数集合有以下几个特性 所含元素全是整数,且不重复 内部元素有序,通常是会 ...
- Redis的设计与实现之整数集合和压缩列表
整数集合(intset) 整数集合概念 整数集合是一个集合(set) 整数集合里只包含整数,并且集合元素不能太多 整数集合不会有重复的元素(有重复元素集合就没意义了) 整数集合的实现方式 typede ...
最新文章
- Scan Chain的原理与实现(实践)-top down flow
- Distributed Transaction Coordinator 服务因 3221229584 (0xC0001010) 服务性错误而停止
- STM32(Cortex-M3)开发,RVDS和MDK谁优谁劣?
- 【机器学习入门】机器学习基础核心算法:贝叶斯分类!(附西瓜书案例及代码实现)...
- Samba安装配置用于虚拟机共享文件_很详细
- 数据结构:(翻转二叉树) 若二叉树采用二叉链表作存储结构,要交换其所有分支结点的左右子树的位置,采用()遍历方法最合适
- maven 多项目搭建
- 程序员笔记(知识)管理的一点经验
- 关于二分查找 使用 lower_bound
- 浪潮gs开发平台学习---平台快速开发入门
- 【基础教程】基于matlab疫情防护动图制作【含Matlab源码 028期】
- 挑战程序设计竞赛:三角形
- RTX2009管理器服务运行状态空白
- 中国港口年鉴(2000-2020年)
- rainmeter 皮肤_Rainmeter入门指南:在桌面上显示系统统计信息
- mac打开nh文件-cajviewer.dmg
- Win10系统开机后任务栏卡死解决方法
- Splay Tree伸展树
- 数组中的元素转成Number或者String---数组map方法
- rhce考试linux环境,RHCSA考试题及RHCE考试题
热门文章
- 一致性哈希算法的基本原理
- tensorflow 就该这么学--1
- 深度学习核心技术精讲100篇(六十四)-特征选择原理及应用实战案例
- 深度学习核心技术精讲100篇(五十五)- 基于OpenCV实现棋盘图像识别
- 运筹学(最优化理论)学习笔记 | 分支定界法
- HDFS--Hadoop分布式文件系统
- 数据挖掘系列(5)使用mahout做海量数据关联规则挖掘
- 基于stm32f405控制三相无刷电机例程_ST SSC 频道 | 基于ST STM32F302R8T6 电机空气压缩机方案...
- 数据分析系列:绘制折线图(matplotlib)2
- Youtube推荐系统是如何挖掘用户内心另一面的