Redis数据结构之整数集合(intset)

整数集合( intset) 是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时, Redis 就会使用整数集合作为集合键的底层实现。

整数集合 (intset) 是 Redis 用于保存整数值的集合抽象数据结构,它可以保存类型为int16 、int32 或者 int64 的整数值,并且保证集合中不会出现重复元素。

数据结构

typedef struct intset {
    //编码方式
    uint32_t encoding;
    //集合元素数量
    uint32_t length;
    //元素数组
    int8_t contents[];
} intset;

contents 数组是整数集合的底层实现:整数集合的每个元素都是 contents 数组的一个数组项,各个项在数组中按值的大小从小到大有序地排列,并且数组中不包含任何重复项。

length 属性记录了整数集合包含的元素数量,也即是 contents 数组的长度。

虽然 intset 结构将 contents 属性声明为 int8 类型的数组,但实际上 contents 数组并不保存任何 int8 类型的值,contents 数组的真正类型取决于 encoding 属性的值

数组升级

每当我们要将一个新元素添加到整数集合里面,并且新元素的类型比整数集合现有所有 元素的类型都要长时,整数集合需要先进行升级  (upgrade ),然后才能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值