Redis数据类型(一)-对象系统

Redis数据类型-Redis的对象系统

Redis有五种数据类型,String、List、Hash、Set、Zset,五种数据类型低层对应多种数据结构,比如简单动态字符串、双端链表、压缩列表、跳跃表、字典等。

Redis并没有直接使用这些数据结构来实现键值对数据库,而是另外构建了一个对象系统。

Redis中的每个对象都是由一个redisObject结构表示。从Redis安装包/src/server.h中可以看到结构定义

  • avatar
  • type:对象类型,包含五种类型,分别是字符串对象、列表对象、集合对象、有序集合对象、哈希对象。见上图注释

  • *ptr:指针变量,指向对象的底层实现数据结构,这些底层的具体数据结构由encoding属性决定。

  • encoding:记录了对象使用的编码。记录这个对象的底层实现是什么数据结构。见上图注释

Redis五种对象类型,每种对象类型都至少使用了两种不同的编码。每个对象类型的编码对用户都是透明的,Redis会自适应的选择较优化的内部编码格式。比如Redis中字符串对象就使用三种编码:

  • obj_encoding_int:long型的64位有符合整数。

  • obj_encoding_embstr:长度小于44字节的字符串。

  • obj_encoding_raw:长度大于44字节的字符串。

通过上面的redisObject结构,我们可以看出,Redis的五种数据类型都可以用redisObject结构表示。比如字符串对象, type = OBJ_STRING; encoding = OBJ_ENCODING_RAW; *ptr指向具体的数据结构,就表示了一种字符串对象。

这边文章只是接下来讲Redis五种数据类型的基础,单独看比较枯燥。先了解下Redis的对象系统,有助于后面的学习。
Redis数据结构

文章持续更新,欢迎大家关注我公众号,微信搜索「易大师的小屋」。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。