https://www.nowcoder.com/feed/main/detail/d8dd74b804dd44c7aaf1bb0249f86dee?sourceSSR=users

https://www.cnblogs.com/use-D/p/18272513

Redis使用跳表(Skip List)作为有序集合(Sorted Set)的底层数据结构之一。跳表是一种随机化的数据结构,它通过在链表的不同层级上构建索引来加速搜索操作,提供了比普通链表更快的查找速度,平均时间复杂度为O(log n)。

以下是Redis中跳表插入数据的基本过程:

以下是Redis中跳表插入数据的基本过程:

  1. 初始化和随机化层级:
  2. 寻找插入位置:
  3. 插入新节点:
  4. 更新跳表的高度:
  5. 调整跨度(span):
  6. 跳表节点计数更新:

通过上述过程,Redis能够有效地在跳表中插入新的键值对,同时保持数据结构的有序性和高效性。值得注意的是,尽管插入操作理论上可以在O(log n)的时间内完成,但由于需要更新多层索引,实际操作中可能需要进行多次内存分配和链接操作。然而,由于跳表的随机化性质,这些操作的平均成本仍然较低。

redis跳跃表图解&插入详述