redis对象类型

 

    redis对象类型

      redis并没有用我们先前提到的的主要数据结构:SDS,链表,字典,压缩列表,跳跃列表作为redis对象的直接实现.而是基于这些数据 结构创建一个对象系统.

      这个系统包括了字符串对象,哈希对象,列表对象,集合对象和有序集合对象.每种对象都至少用到了一个我们前面介绍的数据结构.

一.对象类型以及编码

     redis使用对象表示数据库中的键和值.每次新建一个键值对的时候,至少会创建两个对象,键对象和值对象.例如:set msg "hello".msg就是键对象,hello就是值对象.

    redis每一个对象都是由一个redisObject来表示.

    

typedef struct redisObject {
    unsigned type:4;//类型
    unsigned encoding:4;//编码
    unsigned lru:REDIS_LRU_BITS; 
    int refcount;/*引用计数*/
    void *ptr;
} robj;

 

     1.1 类型,编码格式以及它们的对应关系

    对象的类型分别对应字符串对象,哈希对象,列表对象,集合对象和有序集合对象

#define REDIS_STRING 0
#define REDIS_LIST 1
#define REDIS_SET 2
#define REDIS_ZSET 3
#define REDIS_HASH 4

   对象的编码分别对应之前介绍的八种基本类型

#define REDIS_ENCODING_RAW 0     /* Raw representation */
#define REDIS_ENCODING_INT 1     /* Encoded as integer */
#define REDIS_ENCODING_HT 2      /* Encoded as hash table */
#define REDIS_ENCODING_ZIPMAP 3  /* Encoded as zipmap */
#define REDIS_ENCODING_LINKEDLIST 4 /* Encoded as regular linked list */
#define REDIS_ENCODING_ZIPLIST 5 /* Encoded as ziplist */
#define REDIS_ENCODING_INTSET 6  /* Encoded as intset */
#define REDIS_ENCODING_SKIPLIST 7  /* Encoded as skiplist */

   各类型的存储结构如下图所示:

这里写图片描述

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值