网站首页 钓鱼入门 钓鱼技巧 鱼饵料 钓鱼工具 聚焦
当前位置:渔鱼馆 > 钓鱼入门 > 新手钓鱼

redis对象

栏目: 新手钓鱼 / 发布于: / 人气:1.97W

redis使用对象来表示数据库中键和值,每次在库中创建一个键值对时,至少会创建两个对象,一个是键对象,一个是值对象

其数据结构如下:

redis对象

1. 类型

这个类型保存就是redis所支持的五种数据类型的一种

REDIS_STRING 字符串对象

REDIS_LIST 列表对象

REDIS_HASH 哈希对象

REDIS_SET 集合对象

REDIS_ZSET 有序集合对象

2. 编码

对象ptr指针指向具体的底层数据结构的实现,而具体使用哪一种底层结构则有encoding属性决定,共8种

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 跳表

3. 字符串对象

字符串对象的编码可以是int,raw,embstr

如果一个字符串保存的是整数值,那并且这个整数值可以用long来表示,那么字符串对象对象会将整数值保存在字符串结构的ptr属性里面(将void*转换成long),并将编码设置为int如果字符串对象保存的是一个字符串的值,且这个字符串的值的长度大于32字节,那么字符串对象将使用一个SDS来保存这个字符串的值,并将编码设置为raw如果字符串对象保存的是一个字符串的值,且这个字符串的值的长度小于32字节,那么字符串对象将使用一个embstr编码的方式来保存这个字符串的值,并将编码设置为embstr,embstr编码专门用来保存短字符串一种优化编码

4. 列表对象

列表对象的编码可以是ziplist或者linkedlist

列表对象保存的所有字符串的长度都小于64字节且列表对象保存的元素数量小于512个时使用ziplist来存储,否则使用linkedlist

5. 哈希对象

字符串对象的编码可以是ziplist,hashtable

哈希对象保存的所有键值对的键和值的字符串长度都小于64字节,且哈希对象保存的键值对数量小于512时使用ziplist来存储,否则使用hashtable

注:ziplist存储哈希对象时键值对都是挨在一起存储的

redis对象 第2张

6. 集合对象

集合对象的编码可以是intset或者hashtable

集合对象保存的所有元素都是整数值且元素数量不超过512时使用intset存储,否则使用hashtable

7. 有序集合对象

集合对象的编码可以是ziplist或者skiplist

有序集合保存元素个数小于128且所有元素成员长度都小于64字节时使用ziplist来存储,否则使用skiplist

Tags:redis