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_STRING REDIS_ENCODING_INT 简单整数 用 long 类型表示的整数值
REDIS_ENCODING_EMBSTR embstr编码的简单字符串 保存长度小于44字节的字符串(redis3.2版本之前是39字节,之后是44字节)。
REDIS_ENCODING_RAW 动态字符串 保存长度大于44字节的字符串(redis3.2版本之前是39字节,之后是44字节)
REDIS_LIST REDIS_ENCODING_ZIPLIST 压缩列表

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

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

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

REDIS_ENCODING_LINKEDLIST 双向链表  
REDIS_HASH REDIS_ENCODING_ZIPLIST 压缩列表  
REDIS_ENCODING_HT 字典(hashtable)  
REDIS_SET REDIS_ENCODING_INTSET 整数集合

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

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

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

REDIS_ENCODING_HT 字典(hashtable)  
REDIS_ZSET REDIS_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

你可能感兴趣的:(java,数据库)