Skip List Redis原理解析

参考:

视频链接: https://www.youtube.com/watch?v=RHmL6pDhS1w

https://github.com/KIDXO/DS-A/blob/master/data/17.跳表:为什么Redis一定要用跳表来实现有序集合.md

image-20250520194104705

image-20250520193740369

image-20250520193834910

image-20250520193900724

image-20250520193918797

image-20250520193931427

为什么不用平衡树?

  • 节省内存:跳表相比于树占用的内存较少,而且还可以通过调整层级生成的随机数来平衡索引效率和内存占用。
  • 对范围操作支持友好:ZSet 经常需要进行诸如 ZRANGEZREVRANGE 这种范围操作,跳表在这方面操作的效率不比平衡树差。
  • 修改操作的代价小:平衡树在修改后需要重新平衡,而跳表的效率更高。
  • 实现简单:跳表相比树的实现更为简单。