前文 Redis 设计与实现 2:Redis 对象 说到,五大数据类型都会封装成 RedisObject。
typedef struct redisObject {
unsigned type:4; // 类型
unsigned encoding:4; // 编码
// ...
void *ptr; // 指向具体底层数据的指针
} robj;
不同数据类型的主要区别就是 type 和 encoding 属性的差异,同一种数据类型,有不同的编码。
一、编码类型
字符串的编码有raw、embstr、int三种。
raw用于长字符串。embstr用于短字符串。int用于整数类型。
定义在 server.h 中,这里只列出 string 类型的编码
#define OBJ_ENCODING_RAW 0
#define OBJ_ENCODING_INT 1
#define OBJ_

本文详细解析Redis中字符串类型的三种编码——raw、embstr和int,探讨它们各自的适用场景和转换规则。重点介绍了编码转换过程,如int转raw和embstr转raw,并强调embstr编码的内存优化策略。
最低0.47元/天 解锁文章
5340

被折叠的 条评论
为什么被折叠?



