每种类型的变量至少使用了两种不同的编码
1 五种对象的底层编码:
字符串类型对象:REDIS_ENCODING_INT REDIS_ENCODING_EMBSTR REDIS_ENCODING_RAW
列表类型的对象:REDIS_ENCODING_ZIPLIST REDIS_ENCODING_LINKEDLIST
哈希对象:REDIS_ENCODING_ZIPLIST REDIS_ENCODING_HT
集合对象:REDIS_ENCODING_INTSET REDIS_ENCODING_HT
有序集合对象:REDIS_ENCODING_ZIPLIST REDIS_ENCODING_SKIPLIST
集合对象的编码可以是intset 或者 hashtable
A:intset编码的集合对象使用整数集合作为底层实现。
B:hashtable编码的集合对象 使用 字典 作为底层实现,集合元素存储在键对象中,值对象设为null。
2 编码转换条件
当 A:每个集合元素都为整数值,且
B:列表中元素个数小于等于512个
时,会用整数集合实现集合对象。否则采用字典实现集合对象。
API:
SADD
SCARD
SISMEMBER
SMEMBERS
SRANDMEMBER
SPOP
SREM
3 命令在编码上的作用原理
根据2进行推测