美文网首页
Redis数据类型(一)-对象系统

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

作者: 程序猿猴 | 来源:发表于2020-10-27 23:15 被阅读0次

    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数据结构

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

    相关文章

      网友评论

          本文标题:Redis数据类型(一)-对象系统

          本文链接:https://www.haomeiwen.com/subject/bwvfvktx.html