美文网首页
Redis 数据结构之跳跃表

Redis 数据结构之跳跃表

作者: 杰哥长得帅 | 来源:发表于2019-02-04 22:22 被阅读12次

跳跃表是一种有序数据结构,它通过每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的

跳跃表支持平均 O(logN)、最坏 O(N) 复杂度的节点查找,还可以通过顺序性操作来批量处理节点

如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员是比较长的字符串时,Redis 就会使用跳跃表来作为有序集合键的底层实现

除了有序集合,跳跃表在 Redis 的另一个用途是在集群节点中用作内部数据结构

跳跃表实现

位于图片最左边的是 zskiplist 结构,用于保存跳跃表信息

通过两个指针,程序定位表头节点和表尾节点复杂度都为 O(1)
通过 length 属性,程序可以在 O(1) 时间内返回跳跃表的长度

右方是四个 zskiplistNode 结构,用于表示跳跃表节点

每个跳跃表节点层高都是 1 至 32 之间的随机数

在同一个跳跃表中,多个节点可以包含相同的分值,但每个节点的成员对象必须是唯一的

跳跃表中的节点按照分值大小进行排序,当分值相同时,节点按照成员对象的字典序进行排序

相关文章

  • 4.8-Redis6数据结构之SortedSet类型介绍和跳跃表

    Redis6数据结构之SortedSet类型介绍和跳跃表介绍 简介:Redis6数据结构之SortedSet类型介...

  • Redis设计与实现-笔记(二)

    数据结构与对象 跳跃表 跳跃表是有序集合的底层实现之一, 除此之外它在 Redis 中没有其他应用。 Redis ...

  • redis基本数据结构

    redis 基本数据结构. redis的基本数据结构主要有: SDS动态字符串,链表,字典,哈希表,跳跃表,整数集...

  • redis笔记

    redis基础知识 数据结构 底层数据结构 SDS 双向链表 压缩列表 跳跃表 Hash表 整数数组 对外数据结构...

  • Redis 跳跃表(skiplist)

    Redis基础类型中的有序集合、集群节点的内部数据结构用到了跳跃表(skiplist)。 5.1 跳跃表的实现 图...

  • Redis数据结构之跳跃表

    Redis中使用跳跃表作为有序集合键底层实现之一(如果有序集合中数据量较大或有序集合中的成员是较长的字符串)。 跳...

  • Redis 数据结构之跳跃表

    跳跃表是一种有序数据结构,它通过每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的 跳跃表支持平均 ...

  • 用Python深入理解跳跃表原理及实现

    最近看 Redis 的实现原理,其中讲到 Redis 中的有序数据结构是通过跳跃表来进行实现的。第一次听说跳跃表的...

  • redis之跳跃表

    Redis里面使用skiplist是为了实现sorted set这种对外的数据结构。sorted set提供的操作...

  • Redis之跳跃表

    跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持毒功而指向其他节点的指针,从而达到快速访问节点...

网友评论

      本文标题:Redis 数据结构之跳跃表

      本文链接:https://www.haomeiwen.com/subject/owfmsqtx.html