Redis 数据存储模型
redisObject
typedef struct redisObject {
unsigned type:4;
unsigned encoding:4;
unsigned lru:LRU_BITS; /* LRU time (relative to global lru_clock) or
* LFU data (least significant 8 bits frequency
* and most significant 16 bits access time). */
int refcount;
void *ptr;
} robj;
定义了 Redis 中的数据对象结构 redisObject
,它是 Redis 存储数据的基本单元。
-
unsigned type:4;
和unsigned encoding:4;
:这两个字段用于表示对象的类型和编码方式。它们各自使用 4 位来存储,因此每个字段的值可以是 0 到 15(4 位的二进制数可以表示 0 到 15 的十进制数)。type
表示对象的数据类型(例如字符串、哈希、列表等),encoding
表示对象的内部编码方式(例如字符串的编码方式可以是 int、embstr 等)。 -
unsigned lru:LRU_BITS;
:这个字段用于实现 LRU(Least Recently Used)算法,用于对象的淘汰策略。LRU_