之前我们整理的内容是Redis用到的数据结构,但是Redis 并没有直接使用这些数据结构来实现键值对数据库, 而是基于这些数据结构创建了一个对象系统, 这个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象, 每种对象都用到了至少一种我们前面所介绍的数据结构。
Redis 对象的类型与编码
Redis使用对象来表示数据库中的键和值,当创建一个键值对时,我们至少会创建两个对象,即键对象和值对象。
typedef struct redisObject {
// 类型
unsigned type:4;
// 编码
unsigned encoding:4;
// 指向底层实现数据结构的指针
void *ptr;
// ...
} robj;
其中type属性记录了对象的类型:
- REDIS_STRING 字符串对象
- REDIS_LIST 列表对象
- REDIS_HASH 哈希对象
- REDIS_SET 集合对象
- REDIS_ZSET 有序集合对象
在Redis数据库保存的键值对中:
键必须是一个字符串对象,而值可以是字符串、列表、哈希、集合或有序集合对象中的一种。