1,每个节点多个指针 2,有序链表 3,基本平衡,平均logn
只有zset使用了 还有集群的内部实现
1,level数组的长度是根据幂次定律生成的1-32之间的随机数,并且越大的数出现的概率越小。由于是直接分配在结构体的,可以通过sizeof计算出该层的level数量 2,前进/后退指针 backward和forward(span为1的level)就是双向链表,后退指针在zrevrange的时候很有用
对于插入,很显然l1是必须要插入对, l2要插入对概率为1/2, l3要插入的概率为1/4,ln插入的概率是1/2**n,这样就能保持下一层是上一层个数的1/2。
对于删除,找到该节点,在查找的过程中,其实就能找出每一层的每一层的前一个节点。