redis深入理解之数据存储
Redis 的数据存储机制主要是通过键值对的方式将数据保存在内存中。Redis 支持的数据类型包括字符串、列表、集合、有序集合、哈希表等。
以下是 Redis 数据存储的基本结构示意图:
在 Redis 中,每个键值对数据都存储在一个 redisObject 结构体中,键总是一个字符串对象,而值可以是不同类型的对象,如字符串对象、列表对象、集合对象等。
以下是一个简单的 redisObject 结构体的定义:
typedef struct redisObject {
unsigned type:4;
unsigned storage:2; /* REDIS_STORAGE_* */
unsigned encoding:4; /* REDIS_ENCODING_* */
unsigned lru:22; /* lru time (relative to server.lruclock) */
int refcount;
void *ptr;
} robj;
其中:
type
表示对象的类型,比如字符串、列表等。encoding
表示该对象的内部编码方式,如:- REDIS\_ENCODING\_INT 表示整数
- REDIS\_ENCODING\_RAW 表示字符串
- REDIS\_ENCODING\_HT 表示哈希表
- REDIS\_ENCODING\_ZIPLIST 表示压缩列表
- REDIS\_ENCODING\_LINKEDLIST 表示双端链表
- REDIS\_ENCODING\_ZSET 表示排序集合
- REDIS\_ENCODING\_INTSET 表示整数集合
ptr
是一个指针,指向实际存储数据的数据结构。
Redis 会根据数据的实际类型和大小,自动选择合适的内部编码。这种灵活性使得 Redis 可以根据数据的特点选择最适合的数据结构来存储数据,从而提高内存的使用效率。
评论已关闭