①键值对分别是啥子?
Redis键值对均为对象
键——字符串对象
值——各种对象——及其底层编码
值:可以是 字符串、列表、哈希、集合、有序集合对象。五者之一。
②五大对象的底层数据结构
该图是 值——各对象——底层数据结构/编码。
③五大对象的底层数据结构对应关系
值--五对象之一 ==> 底层数据结构编码实现
字符串对象 ==> int、raw、embstr
列表对象 ==> ziplist、linkedlist
哈希对象 ==> ziplist、hashtable
集合对象 ==> intset、hashtable
有序集合对象 ==> ziplist、skiplist
④简写下对象--底层大致结构体,大家可以有个印象
typedef struct redisObject {
unsigned type ==> 五类型之一,例如:REDIS_SET
unsigned encoding ==> 底层编码数据结构,例如:REDIS_ENCODING_INT
void *ptr ==> 指向底层编码数据结构,例如字符串对象 ==> int、raw、embstr
} robj;