Redis基本数据类型:有序集合(sorted set)
Redis内部使用两种结构来实现sorted set
- 压缩列表(ziplist)
- 跳跃列表(skiplist)
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
当存储的节点大于128或者某一个值得长度大于64时,sorted set会使用跳跃列表,否则使用压缩列表
1. 压缩列表(ziplist)
前面已经介绍过,这里就略过了
使用这种结构时,redisObject.encoding = OBJ_ENCODING_ZIPLIST
2. 跳跃列表(skiplist)
使用这种结构时,redisObject.encoding = OBJ_ENCODING_SKIPLIST
先来看一下zset的结构:
typedef struct zset {
dict *dict;
zskiplist *zsl;
} zset;
zset采用这种编码方式时,底层其实是由hashtable和skiplist共同实现的,hashtable主要负责从key查找value,在以前已经介绍过了,而skiplist主要是用来查找一段value,继续来看下skiplist的结构:</