Redis源码剖析和注释(十二)--- 集合类型键实现(t_set)
Redis 集合类型键实现(t_set) 集合命令介绍 redis中所有的集合命令如下:Redis集合命令详解 集合类型的实现 之前在redis对象系统源码剖析和注释中提到,一个集合类型的对象的编码有两种,分别是 OBJ_ENCODING_HT和OBJ_ENCODING_INTSET 。 关于集合类型底层的两种数据结构的源码剖析和注释,请看下面的博文。 Redis 字典结构源码剖析和注释 Redis 整数集合源码剖析和注释 从OBJ_ENCODING_INTSET转换到OBJ_ENCODING_HT的条件如下: redis的配置文件中的选项:如果数据编码为整数集合的集合对象的元素数量超过 set-max-intset-entries 阈值,则会转换编码 set - max - intset - entries 512 如果向数据编码为整数集合的集合对象插入字符串类型的对象,则会转换编码 集合对象的数据编码转换的源码如下: // 将集合对象的INTSET编码类型转换为enc类型 void setTypeConvert ( robj * setobj , int enc ) { setTypeIterator * si ; serverAssertWithInfo ( NULL , setobj , setobj -> type == OBJ_SET && setobj ->