面试题答案
一键面试整数集合升级触发机制
- 空间不足以容纳新元素:当向整数集合中添加一个新元素时,如果整数集合当前的编码方式(encoding)所提供的空间无法容纳该新元素,就会触发升级。
- 保证元素存储类型一致:Redis的整数集合为了保证集合中所有元素在内存中是连续存储且类型一致,当有新元素加入导致当前编码无法满足这一条件时,会进行升级。
引发升级的数据类型
- 新元素类型大于现有元素类型:例如整数集合当前编码为INTSET_ENC_INT16(表示集合中元素类型为16位有符号整数),如果要添加一个32位有符号整数,就会触发升级到INTSET_ENC_INT32编码。
- 常见的如添加比现有元素类型大的整数:如现有集合元素都是8位有符号整数(INTSET_ENC_INT8),添加一个16位、32位或64位有符号整数时,就会引发整数集合的升级。