Redis数据结构之RedisObject

        Redis是一种高性能的开源内存数据存储系统,它支持多种不同类型的键值对。这些键值对的实现是基于一系列底层的数据结构。Redis底层数据结构包括字符串、双端链表、字典、压缩列表、整数集合等,但是Redis为了加快读写速度,并没有直接使用这些数据结构,而是在此基础上又包装了一层称之为RedisObject,RedisObject 有五种对象:字符串(String)、列表(List)、集合(Set)、有序集合(Sorted Set)和哈希(Hash)。

        RedisObject是 Redis 的对象系统的核心,它是所有数据类型的最外层的一层结构定义。任意数据类型的键和值都会被封装为一个RedisObject。        

 RedisObject底层设计

typedef struct redisObject {
    // 类型
    unsigned type:4个bit;
    // 编码
    unsigned encoding:4个bit;
    // 对象最后一次被访问的时间
    unsigned lru:REDIS_LRU_BITS; /* LRU_BITS为24bit*/
//引用计数
    int refcount;4个字节
    // 指向实际值的指针
    void *ptr;8个字节
} robj;

下面分别解释一下各个字段的含义:

  • type 记录了对象的类型占4个bit位,目前Redis支持的对象类型如下:

类型常量

常量对应的对象类型

OBJ_STRING

字符串(String)

OBJ_LIST

列表(List)

OBJ_SET

集合(Set)

OBJ_ZSET

有序集合(Sorted Set)

OBJ_HASH

哈希(Hash)

  • ptr 指向对象的底层实现数据结构,即为具体对象值,占8个字节,这个后面会具体分析。
  • encoding表示 ptr 指向的具体数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值