Redis 中存在五种底层的数据结构:简单动态字符串(SDS)、双端链表、字段、压缩列表、整数集合
Redis 中由五种基本对象:字符串对象、列表对象、哈希对象、集合对象和有序集合对象
Redis 中的基本对象的回收基于引用计数法
1. 对象的类型和编码
Redis 中的对象都是由 RedisObject 结构表示,该结构保存着三个属性:type 属性、encoding 属性 和 ptr 属性
typedef struct RedisObject{
//类型
unsigned type:4;
//编码
unsigned encoding:4;
//指向底层数据结构的指针
void *ptr;
}
通过 TYPE 命令,可以查看 Reids 的值对象类型(五种对象中的一种)
通过 OBJECT ENCODING 命令可以查看数据库键的值对象的编码(key-value 中 value 的编码,而编码决定底层数据结构的种类)
对象的五种基本类型:
类型常量 | 对象的名称 | TYPE 命令的输出 |
---|---|---|
REDIS_STRING | 字符串对象 | “string” |
REDIS_LIST | 列表对象 | “list” |
REDIS_HASH | 哈希对象 | “hash” |
REDIS_SET | 集合对象 | “set” |
REDIS_ZEST | 有序集合对象 | “zset” |
不同类型和编码的对象: