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
-
适合新手使用鱼竿盘点
最近很多新手钓友私信蓑笠哥有没有什么好的竿子推荐,其实早就想写一篇关于新手鱼竿选购的内容,但一直害怕别人说我卖鱼竿。现在也想开了:到目前为止没有卖任何一个东西,下面推荐的鱼竿我不卖且是我自己用过比较好用且性价比高适合新手。新手的鱼竿要耐操首先我们需...
-
什么样的浮漂灵敏又好用?从浮漂的吃铅比入手
如何选浮漂?我们在之前的文章中也写过,很多钓友感觉自己也会选漂了,无论是通过看视频还是自己摸索出来的。如果在冬季这段不好钓鱼的时间段,你选择的浮漂可以钓上鱼说明你的钓技已经很不错了,在其它季节钓鱼就更没有问题了。不过今天还是要写一写如何选漂,今天的内容...
-
海钓第一课,学会这三种钓组,就会使用沉底钓了
相较于淡水钓,海钓的乐趣是不同的,在海钓中,动辄需要使用30~80号远投竿,主线组的鱼线拉力值至少要60磅以上,子线则至少20磅,从这几个数值就会发现,淡水钓所谓的大鱼,在海钓面前,真的只是弟弟。在海钓时,最常用的钓法,是沉底钓,即主要针对海底施钓,但是,这并不是说沉底钓只能...
-
传统钓和台钓要灵活运用
就台湾钓法来说,若不是在小水面、鱼的密度大、以鲫鱼、罗非鱼为主要钓鱼对象的条件下垂钓的话,完全可以用传统钓法先打窝子,投诱饵后再钓。而不必采取台湾钓法中用钩上的饵料作诱饵的办法。食饵若是面团可揉得稍硬~些,以耐水浸泡。竿子可用长竿,风线,竿梢也不一定非得...