Redis源码阅读(六) – intset

intset为整型集合,结构如下:

typedef struct intset {
    uint32_t encoding;
    uint32_t length;
    int8_t contents[];
} intset;

#define INTSET_ENC_INT16 (sizeof(int16_t))
#define INTSET_ENC_INT32 (sizeof(int32_t))
#define INTSET_ENC_INT64 (sizeof(int64_t))

支持3种类型的整型: int16_tint32_tint64_t,元素从小到大紧凑存放在contents[]中,查找很快为O(lgn),但是增加和删除会导致内存移动和重分配。

分类:

更新时间:

留下评论