Skip List Redis原理解析
参考:
视频链接: https://www.youtube.com/watch?v=RHmL6pDhS1w
https://github.com/KIDXO/DS-A/blob/master/data/17.跳表:为什么Redis一定要用跳表来实现有序集合.md
为什么不用平衡树?
- 节省内存:跳表相比于树占用的内存较少,而且还可以通过调整层级生成的随机数来平衡索引效率和内存占用。
- 对范围操作支持友好:ZSet 经常需要进行诸如
ZRANGE
或ZREVRANGE
这种范围操作,跳表在这方面操作的效率不比平衡树差。 - 修改操作的代价小:平衡树在修改后需要重新平衡,而跳表的效率更高。
- 实现简单:跳表相比树的实现更为简单。