Redis源码剖析——集合对象

集合对象

集合对象的编码可以为intset 或则 hashtable

intset编码的的集合对象

当满足下面两个条件时,集合对象将使用intset编码
1. 集合对象的所有元素都是整数值
2. 集合对象的元素个数小于等于512

当执行命令 SADD numbers 1 2 3 4 时
键numbers的值对象将使用Intset编码,内存布局如下图
Redis源码剖析——集合对象

hashtable编码的集合对象

当不满足intset编码集合对象的两个条件时将使用hashtable编码
如执行命令SADD fruits “apple” 后
键fruits的值对象将使用hashtable编码,内存布局如图
Redis源码剖析——集合对象