整数集合
整数集合(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
类型的整数值 。
集合中的整数从小到大顺序保存。
向整数集合添加比当前元素类型长的元素时,将需要先对整数集合进行升级,即更换范围更大的编码并重新排列元素位置。
一旦升级,不会再降级。
标签:encoding,Redis,整数,类型,数组,集合,数据结构,contents From: https://www.cnblogs.com/gcr277/p/17037525.html