|
quicklist节点结构:
- typedef struct quicklistNode {
- struct quicklistNode *prev; //前驱节点指针
- struct quicklistNode *next; //后继节点指针
- //不设置压缩数据参数recompress时指向一个ziplist结构
- //设置压缩数据参数recompress指向quicklistLZF结构
- unsigned char *zl;
- //压缩列表ziplist的总长度
- unsigned int sz; /* ziplist size in bytes */
- //ziplist中包的节点数,占16 bits长度
- unsigned int count : 16; /* count of items in ziplist */
- //表示是否采用了LZF压缩算法压缩quicklist节点,1表示压缩过,2表示没压缩,占2 bits长度
- unsigned int encoding : 2; /* RAW==1 or LZF==2 */
- //表示一个quicklistNode节点是否采用ziplist结构保存数据,2表示压缩了,1表示没压缩,默认是2,占2bits长度
- unsigned int container : 2; /* NONE==1 or ZIPLIST==2 */
- //标记quicklist节点的ziplist之前是否被解压缩过,占1bit长度
- //如果recompress为1,则等待被再次压缩
- unsigned int recompress : 1; /* was this node previous compressed? */
- //测试时使用
- unsigned int attempted_compress : 1; /* node can't compress; too small */
- //额外扩展位,占10bits长度
- unsigned int extra : 10; /* more bits to steal for future usage */
- } quicklistNode;
相关配置
在redis.conf中的ADVANCED CONFIG部分:
- list-max-ziplist-size -2
- list-compress-depth 0
list-max-ziplist-size参数
我们来详细解释一下list-max-ziplist-size这个参数的含义。它可以取正值,也可以取负值。
当取正值的时候,表示按照数据项个数来限定每个quicklist节点上的ziplist长度。比如,当这个参数配置成5的时候,表示每个quicklist节点的ziplist最多包含5个数据项。
当取负值的时候,表示按照占用字节数来限定每个quicklist节点上的ziplist长度。这时,它只能取-1到-5这五个值,每个值含义如下:
-5: 每个quicklist节点上的ziplist大小不能超过64 Kb。(注:1kb => 1024 bytes)
-4: 每个quicklist节点上的ziplist大小不能超过32 Kb。
-3: 每个quicklist节点上的ziplist大小不能超过16 Kb。
-2: 每个quicklist节点上的ziplist大小不能超过8 Kb。(-2是Redis给出的默认值)
list-compress-depth参数 (编辑:衢州站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|