Redis五种数据结构底层编码

Redis五种数据结构底层编码

每种类型的对象都至少使用了两种不同的编码:

Redis五种数据结构底层编码

其中REDIS_ENCODING_ENBSTR和REDIS_ENCODING_RAW都是用于保存字符串值,其中embstr编码是专门用于保存短字符串的一种优化编码方式,这种编码和raw编码一样,都使用redisObject结构和sdshdr结构结构来表示字符串对象,但raw编码会调用两次内存分配函数来分别创建redisObject结构和sdshdr结构,而embstr编码则通过调用一次内存分配一块连续的空间,空间中依次包含redisObject结构和sdshdr两个结构,如下图所示:

Redis五种数据结构底层编码

参考文档:

1、《Redis设计与实现》

2、https://blog.csdn.net/XiyouLinux_Kangyijie/article/details/78045385  Redis的embstr与raw编码方式不再以39字节为界了