redis为什么采用跳表而不是红黑树,主要是以下几点原因:
在做范围查找的时候,平衡树比skiplist操作要复杂。
平衡树需要以中序遍历的顺序继续寻找其它不超过大值的节点。
skiplist进行范围查找非常简单,只需要在找到小值之后,对第1层链表进行若干步的遍历就可以实现。
平衡树的插入和删除操作可能引发子树的调整,逻辑复杂,而skiplist的插入和删除只需要修改相邻节点的指针,操作简单又快速。
skiplist需要更少的指针内存。平均每个节点包含1.33个指针,比平衡树更有优势。
从算法实现难度上来比较,skiplist比平衡树要简单得多。