Redis intset也非常简单。它是一个有序整数集合,实际上是一个有序数组,查找时二分查找,添加时可能需要内存挪动。唯一不同的是,它的整数类型是变动的,可以支持int16,int32,int64三种,当然用越小的单位越省内存。只有当当前的整数类型存不下更大的整数时,才让整数类型变大。看结构就了解了:typedef struct intset { uint32_t encoding; uint32_t length; int8_t contents[]; } intset;encoding有三种:#define INTSET_ENC_INT16 (sizeof(int16_t)) #d...
转载
2013-06-21 14:56:00
94阅读
redis的intset数据结构以及升级是怎么回事?[面试7.0]数据结构包含:encoding,length,contents见下图redis的intset升级升
原创
2022-11-17 10:38:37
38阅读
今天来学习一下redis里面的整数集合。typedef struct intset { //结构体大小为8 uint32_t encoding; //编码方式 uint32_t length; //数组长度 int8_t contents[]; //数组下表从0开始} intset;encoding是contents数组元素的编码方式,...
原创
2021-06-01 13:41:36
116阅读
本文及后续文章,Redis版本均是v3.2.8上篇文章我们说到redis object数据结构,其有5中数据类型:OBJ_STRING,OBJ_LIST, OBJ_SET,OBJ_ZSET,OBJ_HASH。集合对象set有着广泛的实际业务应用场景,它包含的元素无序并且不能重复及集合间的交、并、差等基础的操作。本篇就来说说Redis暴露给我们使用的set集合对象的底层实现-intset。
转载
2023-07-08 21:00:51
76阅读
整数集合(intset)是集合键的底层实现之一。它可以保存类型为int16_t,int32_t,int64_t的整数值,当一个集合只包含整数值元素,并且这个集合元素数量不多时,Redis就会使用整数集合作为集合键的底层实现。 length:整数集合包含的元素数量。encoding:编码方式。contents数组:整数集合的每个元素都是contents数组的一个数组项(item),各个项在
转载
2024-07-01 11:19:22
25阅读
REDIS_INTSET
intSet即为:整数集合,整数集合本质上是一块连续内存空间。
编码结构
typedef struct intset {
// 编码方式
uint32_t encoding;
// 集合包含的元素数量
uint32_t length;
// 保存元素的数组
int8_t contents[];
} intset;
前两个属
原创
精选
2023-12-15 09:15:39
181阅读
「这是我参与2022首次更文挑战的第33天,活动详情查看:2022首次更文挑战」。 整数集合(intset) 整数集合 intset 是 redis 中用于保存整数集合的数据类型,他可以保存为 16、
原创
2022-04-12 15:13:41
135阅读
命令: sadd 格式: sadd [key值] v1 v2 v3...示例: sadd set01 v1 v2 v3 创建一个set01,值为一个set集合,值为:”v1 v2 v3”注意: 如果key存在,且也是一个set集合,那么新设置的集合中相同的数据不会被添加,不同数据会追加到key的新值中。如果指定的key存在,但是值非set集合,则会报错。命令: smembers 格式: smemb
转载
2023-07-13 13:36:08
67阅读
redis中整数集合intset相关的文件为:intset.h与intset.c intset的所有操作与操作一个排序整形数组 int a[N]类似,只是根据类型做了内存上的优化。 一、数据结构 1 typedef struct intset { 2 uint32_t encoding; 3 uin ...
转载
2021-05-15 14:39:10
209阅读
2评论
前言
整数集合(intset)并不是一个基础的数据结构,而是Redis自己设计的一种存储结构,是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时, Redis 就会使用整数集合作为集合键的底层实现。
一、整数集合实现
整数集合(intset)是Redis用于保存整数值的集合抽象数据结构,它可以保存类型为int16_t、int32_t或者int64_t的整数值,并且保证
原创
2023-07-02 18:33:42
153阅读
这两天看过《redis设计与实现》中的intset一章,配合着redis 4.0.1中的源码,感觉自己对redis中的intset有了新的认识。在这里写下自己对于intset的理解,以及redis源码中的实现技巧。个人认为,redis中intset的重要部分在于intset对于存储不同类型的整数使用不同的底层数组,巧妙的节约了内存的空间、提供
转载
2023-11-25 10:28:51
33阅读
这次研究了一下intset。研究的过程中,一度看不下过去,可是还是咬牙挺过来了。看懂了也就是那么回事。静下心来,切莫浮躁 Redis为了追求高效,在存储下做了非常多的优化,像intset就是作者为了节约内存定制的数据结构,包含后面将要阅读的压缩列表。 intset是一个有序的整数集,提供了添加,删除
转载
2016-03-11 13:16:00
191阅读
2评论
最近,我想通过redis的源码来学习redis。虽然平时工作中用得不多,不过对redis还是比较感兴趣的,毕竟它的性能是不错的。redis是一个开源的项目,我们可以通过源代码去了解redis。我后面会通过自己的学习,写一些关于redis源码的帖子。帖子的主要内容是分析代码设计,而并不会对源码进行详细解说。如果有不对的地方,请指正。源码是reids 3.0.3版本。intset一、intset数据结
原创
2016-05-05 21:35:22
3075阅读
Redis 提供了 5 种基础的数据结构,它们分别是:String,Hash,List,Set,Sorted Set。Redis 缓存数据是以 key - value 的形式进行存储的,key 是一个唯一的字符串,通过操作唯一的 key 值来获取相应的 value 数据。不同数据结构的数据,也就决定了 value 的结构不一样。String(字符串)Redis 的 String 是一个动态的字符串
转载
2024-06-26 19:58:17
52阅读
一、整数集合在Redis中的应用整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个
原创
2021-12-06 14:31:50
147阅读
一、整数集合在Redis中的应用整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层实现 举个例子,如果我们创建一个只包含五个元素的集合键,并且集合中的所有元素都是整 数值,那么这个集合键的底层实现就会是整数集合:redis> SADD numbers 1 3 5 7 9(intege...
原创
2022-04-09 10:01:38
191阅读
介绍intset是Redis中set的底层数据结构,当集合中全为整数,并且元素数据不多时,会用intset来实现set,
原创
2022-08-04 20:27:55
187阅读
前言关于 redis 的数据结构 intset相关介绍主要围绕着如下测试用例, 来看看 intset 的存储, 以及 相关的 api本文的 int
原创
2024-03-15 15:01:39
40阅读
qq
原创
2022-07-08 20:40:37
51阅读
一、阅读内存编码 1.有序整数集合 intset.h 和 intset.c 数据结构定义 有序整数集合 typedef struct intset { // 编码方式 uint32_t encoding; // 元素数量 uint32_t length; // 保存整数元素的数组 int8_t co ...
转载
2021-07-15 23:41:00
157阅读
2评论