Redis-数据结构与对象-整数集合
整数集合
整数集合(intset)是集合键的底层实现之一: 当一个集合只包含整数值元素, 并且这个集合的元素数量不多时, Redis 就会使用整数集合作为集合键的底层实现。
虽然 intset 结构将 contents 属性声明为 int8_t 类型的数组, 但实际上 contents 数组并不保存任何 int8_t 类型的值 —— contents 数组的真正类型取决于 encoding 属性的值:
- 如果
encoding属性的值为INTSET_ENC_INT16, 那么contents就是int16_t类型的数组, 数组里的每个项都是int16_t类型的整数值 。 - 如果
encoding属性的值为INTSET_ENC_INT32, 那么contents就是int32_t类型的数组, 数组里的每个项都是int32_t类型的整数值 。 - 如果
encoding属性的值为INTSET_ENC_INT64, 那么contents就是int64_t类型的数组, 数组里的每个项都是int64_t类型的整数值 。

集合中的整数从小到大顺序保存。
向整数集合添加比当前元素类型长的元素时,将需要先对整数集合进行升级,即更换范围更大的编码并重新排列元素位置。
一旦升级,不会再降级。

浙公网安备 33010602011771号