美文网首页
redisObject

redisObject

作者: 快点给我想个名 | 来源:发表于2019-11-27 21:55 被阅读0次

内容来自:
《redis设计与实现》购买本书请访问: 京东商城
《Redis 深度历险:核心原理与应用实践》购买本书请访问: 京东商城

redisObject
  • redisObject
    Redis 中的每个对象都由一个 redisObject 结构表示, 该结构中和保存数据有关的三个属性分别是 type 属性、 encoding 属性和 ptr 属性

    typedef struct redisObject {
        // 类型
        unsigned type:4;
        // 编码
        unsigned encoding:4;
        // 对象最后一次被访问的时间
        unsigned lru:REDIS_LRU_BITS; /* lru time (relative to server.lruclock) */
        // 引用计数
        int refcount;
        // 指向实际值的指针
        void *ptr;
    } robj;
    
    • type 属性记录了对象的类型 ,其中包括以下五种类型:
    类型常量 对象的名称
    REDIS_LIST 列表对象
    REDIS_HASH 哈希对象
    REDIS_SET 集合对象
    REDIS_ZSET 有序集合对象
    REDIS_STRING 字符串对象
    • ptr 指针指向对象的底层实现数据结构, 而这些数据结构由对象的 encoding 属性决定

    • encoding 属性记录了对象所使用的编码, 也即是说这个对象使用了什么数据结构作为对象的底层实现 ,其中编码包括下面几种类型:

    编码常量 编码所对应的底层数据结构
    REDIS_ENCODING_INT long 类型的整数
    REDIS_ENCODING_EMBSTR embstr 编码的简单动态字符串
    REDIS_ENCODING_RAW 简单动态字符串
    REDIS_ENCODING_HT 字典
    REDIS_ENCODING_LINKEDLIST 双端链表
    REDIS_ENCODING_ZIPLIST 压缩列表
    REDIS_ENCODING_INTSET 整数集合
    REDIS_ENCODING_SKIPLIST 跳跃表和字典
  • 类型和编码的关系
类型 编码 对象
REDIS_STRING REDIS_ENCODING_INT 使用整数值实现的字符串对象。
REDIS_STRING REDIS_ENCODING_EMBSTR 使用 embstr 编码的简单动态字符串实现的字符串对象。
REDIS_STRING REDIS_ENCODING_RAW 使用简单动态字符串实现的字符串对象。
REDIS_LIST REDIS_ENCODING_ZIPLIST 使用压缩列表实现的列表对象。
REDIS_LIST REDIS_ENCODING_LINKEDLIST 使用双端链表实现的列表对象。
REDIS_HASH REDIS_ENCODING_ZIPLIST 使用压缩列表实现的哈希对象。
REDIS_HASH REDIS_ENCODING_HT 使用字典实现的哈希对象。
REDIS_SET REDIS_ENCODING_INTSET 使用整数集合实现的集合对象。
REDIS_SET REDIS_ENCODING_HT 使用字典实现的集合对象。
REDIS_ZSET REDIS_ENCODING_ZIPLIST 使用压缩列表实现的有序集合对象。
REDIS_ZSET REDIS_ENCODING_SKIPLIST 使用跳跃表和字典实现的有序集合对象。

相关文章

  • redisObject

    内容来自:《redis设计与实现》购买本书请访问: 京东商城《Redis 深度历险:核心原理与应用实践》购买本书请...

  • redisObject

    定义 在自定义的基础数据结构的基础上,redis 通过 redisObject 封装整合成了对外暴露的5中数据结构...

  • 基本数据类型

    redisObject redis中用redisObject包装数据类型,其中 type:表示redis对外支持的...

  • Redis 存储对象信息是用 Hash 还是 String

    Redis 内部使用一个 RedisObject 对象来表示所有的 key 和 value,RedisObject...

  • Redis内存优化

    一.redisObject对象 Redis存储的所有值对象在内部定义为redisObject结构体,内部结构如下图...

  • Redis redisObject

    简介 redisObjet其实就是对应用类型的封装。简介面向对象的思想。实现对数据的统一管理保存 数据结构 这一块...

  • Redis内存优化

    Redis存储的数据都使用redisobject来封装,包括string、hash、list、set、zset在内...

  • Redis 为何这么快?聊聊它的数据结构~

    一、简介和应用 二、Redis的对象redisObject 三、String 四、List 4.1 linkedl...

  • Redis源码研究之redisObject

    本文主要说明Redis key-value结构中封装五种value的redisObject结构。 I、上帝视角 r...

  • Redis中SDS与RedisObject

    上一篇Redis原理中,未能很好地阐述SDS与RedisObject的关系,在这里将其补充一下。 首先说明一点,R...

网友评论

      本文标题:redisObject

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