整数集合
- 整数集合是redis中用来保存整数数值的集合抽象数据结构,d当一个集合中只包括整数值元素,并且这个集合的元素数量不多,redis会采用整数集合作为集合键实现,结构体如下
typedef struct intset {
uint32_t encoding;//编码方式
uint32_t length;//集合包含的元素数量
int8_t contents[];//保存元素的数组
} intset;
encoding 编码有三种:
1.INTSET_ENC_INT16,当为这种时,content里面的每一项都是int16_t类型的整数值
2.INTSET_ENC_INT32,contents里面的每一项都是int32_t类型的整数值
3.INTSET_ENC_INT64,contents里面的每一项都是int64_t类型的整数值
整数集合升级
- 当将一个新元素添加到整数集合中,新元素的类型比整数集合现有的 类型都要长时,整数集合需要升级,升级规则如下
- 根据新元素的类型,扩展整数集合底层数组的空间大小,并为新元素分配空间
- 将底层数组现有的所有元素都转换为与新元素相同的类型,并将类型转换后的元素放置到正确的位上,而且在放置元素的过程中,需要继续维持底层数组的有序性质不变
- 将新元素添加到底层数组里面