Redis intset

Redis intset也非常简单。它是一个有序整数集合,实际上是一个有序数组,查找时二分查找,添加时可能需要内存挪动。唯一不同的是,它的整数类型是变动的,可以支持int16,int32,int64三种,当然用越小的单位越省内存。只有当当前的整数类型存不下更大的整数时,才让整数类型变大。

看结构就了解了:

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

encoding有三种:

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


原文地址:https://www.cnblogs.com/snake-hand/p/3148391.html