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_t
、int32_t
、int64_t
,元素从小到大紧凑存放在contents[]
中,查找很快为O(lgn)
,但是增加和删除会导致内存移动和重分配。
留下评论