Redis整数集合
整数集合(inset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis就会使用整数集合作为集合键的底层。
整数集合的实现
typedef stryct intset{
//编码方式
uint32_t encoding;
//集合包含的元素数量
uint32_t length;
//保存元素的数组
int8_t contents[];
}intset;
这个数组contents不包含重复项,并且数组的真正类型取决于encoding的值
升级(整数集合不支持降级)
将一个新元素(新元素类型比整数集合现有元素的类型都要长)添加到整数集合时,整数集合需要升级。
eg:将一个int32_t的整数值插入含有三个int16_t类型数值的集合中,集合将由16*3变为32*4这就是升级
升级可以提升整数集合的灵活性,尽可能的节约内存。
灵活性:随意插入不同int类型的值
节约内存:只会在有需求时修改