Redis数据结构简单介绍

1、众所周知Redis有五大常见的数据类型,它们在Redis源码中由如下的结构体表示

typedef struct redisObject{
     //类型
     unsigned type:4;
     //编码
     unsigned encoding:4;
     //指向底层数据结构的指针
     void *ptr;
     //引用计数
     int refcount;
     //记录最后一次被程序访问的时间
     unsigned lru:22;
 
}robj

其中type就是那5中数据类型,如下表

对象type属性的值type命令的输出
字符串REDIS_STRING“string”
列表REDIS_LIST“list”
哈希REDIS_HASH“hash”
集合REDIS_SET“set”
有序集合REDIS_ZSET“zset”

 

 

 

 

 

 

 

2、实现上述5中数据类型的底层数据结构又有多种

类型编码对象介绍
REDIS_STRINGREDIS_ENCODING_INT简单整数用 long 类型表示的整数值
REDIS_ENCODING_EMBSTRembstr编码的简单字符串保存长度小于44字节的字符串(redis3.2版本之前是39字节,之后是44字节)。
REDIS_ENCODING_RAW动态字符串保存长度大于44字节的字符串(redis3.2版本之前是39字节,之后是44字节)
REDIS_LISTREDIS_ENCODING_ZIPLIST压缩列表

1、列表保存元素个数小于512个

2、每个元素长度小于64字节

可以在redis.conf 配置文件中的 list-max-ziplist-value选项和 list-max-ziplist-entries 选项进行配置。

REDIS_ENCODING_LINKEDLIST双向链表 
REDIS_HASHREDIS_ENCODING_ZIPLIST压缩列表 
REDIS_ENCODING_HT字典(hashtable) 
REDIS_SETREDIS_ENCODING_INTSET整数集合

1、集合对象中所有元素都是整数

2、集合对象所有元素数量不超过512

可以通过配置文件的 set-max-intset-entries 进行配置

REDIS_ENCODING_HT字典(hashtable) 
REDIS_ZSETREDIS_ENCODING_ZIPLIST压缩列表

第一个节点保存元素的成员,第二个节点保存元素的分值。并且压缩列表内的集合元素按分值从小到大的顺序进行排列,小的放置在靠近表头的位置,大的放置在靠近表尾的位置。

1、保存的元素数量小于128;

2、保存的所有元素长度都小于64字节。

可以通过Redis配置文件zset-max-ziplist-entries 选项和 zset-max-ziplist-value 进行修改

REDIS_ENCODING_SKIPLIST跳表 

  

本文参考:https://www.cnblogs.com/ysocean/p/9102811.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值