redis为什么快?
规避数据库的事务操作
Sorted_set做排名为什么快?
因为底层使用了skip list跳表,skip list特点是以空间换取时间。
跳表的
a、一个跳表应该有几个层(level)组成.
通常是10-20层,leveldb中默认为12层。
b、跳表的第0层包含所有的元素;
且节点值是有序的。
c、每一层都是一个有序的链表;
层数越高应越稀疏,这样在高层次中能'跳过'许多的不符合条件的数据。
d、如果元素x出现在第i层,则所有比i小的层都包含x;
e、每个节点包含key及其对应的value和一个指向该节点第n层的下个节点的指针数组
x->next[level]表示第level层的x的下一个节点
1、通过原始链表查询元素16,需要比较10次
2、通过一级索引查找需要7次
3、通过1、2级索引联合查找需要5次。