Zset底层数据结构
zset是Redis提供的一个非常特别的数据结构,常用作排行榜等功能。zset在Redis中两种不同的实现,分别是zipList和skipList。zipList前面我们已经介绍过了,这里就不再介绍了。具体使用哪种结构进行存储,规则如下:
zipList:需要满足以下两个条件
[score,value]键值对数量少于128个;
每个元素的长度小于64字节;
skipList:不满足以上两个条件时使用跳表、组合了hash和skipList。hash用来存储value到score的映射,这样就可以在O(1)时间内找到value对应的分数;
skipList按照从小到大的顺序存储分数;
skipList每个元素的值都是[socre,value]对;
skipList逻辑
创建索引逻辑类似于抛硬币,如果是正面则创建一级索引,继续抛直到抛到反面为止。
索引结构是每层向后指向,对于众向(相同值)则向下指向。
删除时如链表一样,每层断链删除。