Redis 设计与实现(第二版)第一部分:数据结构与对象跳跃表跳跃表 API
跳跃表 API
表 5-1 列出了跳跃表的所有操作 API 。
表 5-1 跳跃表 API
函数 | 作用 | 时间复杂度 |
---|---|---|
zslCreate |
创建一个新的跳跃表。 | |
zslFree |
释放给定跳跃表,以及表中包含的所有节点。 | , N 为跳跃表的长度。 |
zslInsert |
将包含给定成员和分值的新节点添加到跳跃表中。 | 平均 ,最坏 , N 为跳跃表长度。 |
zslDelete |
删除跳跃表中包含给定成员和分值的节点。 | 平均 ,最坏 , N 为跳跃表长度。 |
zslGetRank |
返回包含给定成员和分值的节点在跳跃表中的排位。 | 平均 ,最坏 , N 为跳跃表长度。 |
zslGetElementByRank |
返回跳跃表在给定排位上的节点。 | 平均 ,最坏 , N 为跳跃表长度。 |
zslIsInRange |
给定一个分值范围(range), 比如 0 到 15 , 20 到 28 ,诸如此类, 如果给定的分值范围包含在跳跃表的分值范围之内, 那么返回 1 ,否则返回 0 。 |
通过跳跃表的表头节点和表尾节点, 这个检测可以用 复杂度完成。 |
zslFirstInRange |
给定一个分值范围, 返回跳跃表中第一个符合这个范围的节点。 | 平均 ,最坏 。 N 为跳跃表长度。 |
zslLastInRange |
给定一个分值范围, 返回跳跃表中最后一个符合这个范围的节点。 | 平均 ,最坏 。 N 为跳跃表长度。 |
zslDeleteRangeByScore |
给定一个分值范围, 删除跳跃表中所有在这个范围之内的节点。 | , N 为被删除节点数量。 |
zslDeleteRangeByRank |
给定一个排位范围, 删除跳跃表中所有在这个范围之内的节点。 | , N 为被删除节点数量。 |
|