Redis数据结构之整数集合-intset

mac2022-06-30  20

当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis会使用整数集合(intset)来存储集合元素。

intset是紧凑的数组结构,同时支持16位、32位和64位整数。

结构

struct intset<T> { int32 encoding; // 编码方式 int32 length; // 集合包含的元素数量 int<T> contents[]; // 保存元素的整数数组 } intset;

  

contents数组是整数集合的底层实现,各个项在数组中按值大小升序排列,且不包含重复项

升级

在将新元素添加进整数集合时,如果新元素的类型比整数集合现有所有元素的类型都要长,整数集合需要先进行升级,扩展底层数组大小,然后再进行添加

升级策略主要有以下两个好处:

提升整数集合灵活性

尽可能地节约内存

注意:整数集合不支持降级操作,一旦进行了升级,编码会一直保持升级后的状态

转载于:https://www.cnblogs.com/jeemzz/p/11443473.html

最新回复(0)