跳跃表
这篇讲的是从Redis底层实现引出的跳跃表数据结构。作者从结构图入手,说明它本质是多层链表的组合,底层S0存储有序数据,上层作为索引加速查找。查找时从顶层向下逐层扫描,插入时则通过随机概率P决定新节点能“跳”到多高,从而在期望O(logn)时间内完成操作。 文章展示了一组实验数据,对比了不同P值(如1/2、1/e)对平均操作时间、列高和跳跃次数的影响,直观体现了参数选择的权衡。最后,作者引用了Redis作者antirez的观点,点出跳跃表相比平衡树的核心优势:内存占用可控、对范围查询(ZRANGE)友好、实现与调试更简单。文末也补充说明,这种简单高效的特性使其同样适合算法竞赛场景。