数据库
首页 > 数据库> > redis设计与实现总结--整数集合

redis设计与实现总结--整数集合

作者:互联网

当一个集合中数量不多且只包含整数元素,redis则用整数集合来作为集合的底层实现。

 

 

typedef struct intset{
    //编码方式
    uint32_t encoding;
    //集合包含的元素数量
    uint32_t length;
    //保存元素的数组
    int8_t contents[];
}intset;
contents数组各个项按值从小到大排序。 length记录了数组的大小,其中数组的真正类型取决于encoding的值。   升级:当出现一个新元素类型比其他整数集合都要长时,进行升级操作,并且加到第一个或最后一个(因为是有序的)。 分三步: 1.根据新元素类型,扩展整个数组的空间大小并为新元素分配空间。 2.将当前数组中元素转换成与新元素相同的类型,并放到正确的位上。 3.将新元素添加到底层数组里面。 时间复杂度为O(n) 好处:提升整数集合的灵活性,尽可能节约内存。 没有降级的操作。

标签:encoding,--,元素,redis,整数,数组,集合,新元素
来源: https://www.cnblogs.com/2462478392Lee/p/14745017.html