跳跃表是有序集合键的底层实现之一,并且在集群节点中用作内部数据结构。如果有一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员是比较长的字符串时,Redis就会使用跳跃表作为有序集合的底层实现。
image.png image.png
跳跃表节点的数据结构:
image.png
跳跃表节点按照score的值从小到大排序,相同的score按照obj对象字典序排序。
跳跃表的数据结构:
image.png
header和tail用于获取跳跃表表头和表尾节点;length用于获取跳跃表长度;level用于获取跳跃表中层数最大的节点的层数量(不包括表头节点的层高)
image.png跳跃表的具体查找插入删除流程:
http://www.cppblog.com/mysileng/archive/2013/04/06/199159.html
网友评论