Redis 高级数据结构:二、简介
简介##
redisobject###
redis中的键、值都是一个对象,redisObject
typedef struct redisObject{
unsigned type:4;
unsigned encoding:4;
void *ptr;
...
}
1.具体的数据结构保存在ptr中
2.具体的类型保存在type中,取值如下
类型常量 | 对象的名称 | TYPE命令输出 |
---|---|---|
REDIS_STRING | 字符串对象 | string |
REDIS_LIST | 列表对象 | list |
REDIS_HASH | 哈希对象 | hash |
REDIS_SET | 集合对象 | set |
REDIS_ZSET | 有序集合对象 | zset |
3.具体的数据结构类型保存在encoding中,和 type关联如下
类型常量(type) | 编码常量(encoding) | 底层结构 | Object命令的输出 |
---|---|---|---|
REDIS_STRING | REDIS_ENCODING_INT | 使用整数值实现的字符串 | int |
REDIS_STRING | REDIS_ENCODING_EMBSTR | 使用embstr编码的sds 实现的字符串 | embstr |
REDIS_STRING | REDIS_ENCODING_RAW | 使用sds实现的字符串 | raw |
REDIS_LIST | REDIS_ENCODING_ZIPLIST | 使用压缩列表实现的列表对象 | ziplist |
REDIS_LIST | REDIS_ENCODING_LINKEDLIST | 使用双端链表实现的列表对象 | linkedlist |
REDIS_HASH | REDIS_ENCODING_ZIPLIST | 使用压缩列表实现的哈希对象 | ziplist |
REDIS_HASH | REDIS_ENCODING_HT | 使用字典实现的哈希对象 | hashtable |
REDIS_SET | REDIS_ENCODING_INTSET | 使用整数集合实现的集合对象 | intset |
REDIS_SET | REDIS_ENCODING_HT | 使用字典实现的集合对象 | hashtable |
REDIS_ZSET | REDIS_ENCODING_ZIPLIST | 使用压缩列表实现的有序集合对象 | ziplist |
REDIS_ZSET | REDIS_ENCODING_SKIPTLIST | 使用跳跃表和字典实现的有序集合对象 | skiplist |