今天在回顾关于 Redis 的5种数据类型的时候,发现 zset 的底层数据结构可以是跳跃表。我之前对跳跃表不太熟,趁现在记得就写一篇文章来把记得的东西写下来,方便复习。
我们先看这么一个例子:
假如这个是一个链表,我想查到“9”的数据,请问要查询几次?
8次!这个懂吧。
但是,我想查询的再快一点,也就是说有没有更快的查询到“9”这个数据的方法呢?
有的!
我可以这个样子:
0——2——6——8——10——9
从0开始,只需要查5次。
可以更快吗?可以的!
再加一层:
0——6——10——8——9
从0开始,只需要查4次。
那还可以更快吗?再加一层:
0——10——6——8——9
从0开始,只需要查4次。
已经是最极限的优化了,没办法再加了。
所以说,Redis “快”的原因就是因为它底层的数据结构,正是因为这些数据结构,才支持 Redis 这么“快”!