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存储哈希对象时键值对都是挨在一起存储的
6. 集合对象
集合对象的编码可以是intset或者hashtable
集合对象保存的所有元素都是整数值且元素数量不超过512时使用intset存储,否则使用hashtable
7. 有序集合对象
集合对象的编码可以是ziplist或者skiplist
有序集合保存元素个数小于128且所有元素成员长度都小于64字节时使用ziplist来存储,否则使用skiplist
-
紫薄鳅-鳅科
颐下无钮状突起。须3对。眼很小,眼间距与眼径之比大于2.5倍。眼下刺不分叉。体侧具蠕虫形花纹。个体小,数量不多。分布于长江中、下游及其附属水体...
-
学会抓这三种鱼口,让你钓的鱼总比别人多
在之前有多篇内容,我从饵料的搭配、状态、调漂等多方面写过,两个人使用相同的钓组在相邻的位置钓鱼,但有的人钓得多,有的人却钓的少。影响钓获多少的因素很多,在一些小细节有所不同,就会导致钓获不同。今天我再来说一种影响钓获的因素:漂相和抓口。漂相就是有外力打破...
-
提高钓技要从细微处下工夫_新手必看
钓友来信称:参加垂钓有年历史,只是由于自己钻研不够,钓鱼成绩总是平平,在许多时候,和大家钓点钓饵都一样,可钓的鱼总不及别人多,自己觉得运气不好,可钓友们说他手潮,有时真不服气。不知从何做起,来提高自己的钓技。请予指点!钓友在信中提出了三个问题:一是条件相同为什么钓...
-
浮漂到底之后还会慢慢下降,导致我们钓不到鱼
钓友们在钓鱼时有没有遇到过这种情况:当你抛竿之后,浮漂已经站起来了,并且到达了指定的钓目,但是浮漂并没有静止下来,仍然会慢慢的下降。而且这片水域不走水,不会出现水流将钩饵带走的情况,提竿也没有中鱼,也不是有鱼咬钩产生的漂相。这种情况不知道钓友们遇到的多不多...