Redis源码学习笔记

Redis源码学习之类型

2019-05-06  本文已影响0人  lixin_karl

说明

redis内部的字符串对象,redis类型之REDIS_STRING 此种类型有三种编码方式分别为:OBJ_ENCODING_RAW,OBJ_ENCODING_INT和OBJ_ENCODING_EMBSTR。
OBJ_ENCODING_RAW redisObj sds所需要的内存分两次申请。
OBJ_ENCODING_INT 当所传入的value是long类型时 int编码。
OBJ_ENCODING_EMBSTR 一次性把redisObj sds 所需要的内存申请到。

t_hash.c
OBJ_HASH类型对应以下两种编码
OBJ_ENCODING_ZIPLIST:当hash表的所有键值对字符串长度都小于64字节并且数量小于512的
情况下使用压缩链表编码,否则使用OBJ_ENCODING_HT编码。

t_list.c
OBJ_LIST类型使用OBJ_ENCODING_QUICKLIST编码

t_set.c
OBJ_SET类型使用OBJ_ENCODING_INTSET编码,所有元素都为数字且小于64字节,元素个数小于等于512,
否则使用OBJ_ENCODING_HT编码

t_zset.c
OBJ_ZSET类型使用OBJ_ENCODING_SKIPLIST,而在元素个数小于128每个元素所占字节数
小于等于64字节时,使用OBJ_ENCODING_ZIPLIST编码。

上一篇下一篇

猜你喜欢

热点阅读