redis intset
ddatsh
set 集合全为 int ,且数量不多(< set-max-intset-entries)时,底层用 intset 结构,否则用 dict
随数据的添加而改变它的数据编码
|
|
encoding
: intset 中每个元素用几个字节来存储
length
: intset 中的元素个数
contents
: 柔性数组,这部分内存不包含在 intset 结构当中
intset 与 ziplist相比:
- ziplist 可存任意二进制串,intset 只能存整数
- ziplist 无序,intset 从小到大有序。ziplist 上查找只能遍历,intset 可进行二分查找,性能更高
- ziplist 可对每个数据项进行不同的变长编码(每个数据项前面都有数据长度字段
len
),intset 只能整体使用一个统一的编码(encoding
)