每种类型的变量至少使用了两种不同的编码
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进行推测
本文介绍了Redis中五种主要数据类型的底层编码方式,包括字符串、列表、哈希、集合及有序集合。详细探讨了集合对象的不同编码形式及其转换条件,并分析了几种常用集合操作命令在不同编码下的实现原理。
503

被折叠的 条评论
为什么被折叠?



