Redis源码剖析——集合对象
集合对象
集合对象的编码可以为intset 或则 hashtable
intset编码的的集合对象
当满足下面两个条件时,集合对象将使用intset编码
1. 集合对象的所有元素都是整数值
2. 集合对象的元素个数小于等于512
当执行命令 SADD numbers 1 2 3 4 时
键numbers的值对象将使用Intset编码,内存布局如下图
hashtable编码的集合对象
当不满足intset编码集合对象的两个条件时将使用hashtable编码
如执行命令SADD fruits “apple” 后
键fruits的值对象将使用hashtable编码,内存布局如图