![7976da8e721471156e80bd4dbb87b6a3.png](https://i-blog.csdnimg.cn/blog_migrate/219491f7763850b9dbdaa86d3dc7e9f5.png)
《Redis设计与实现》提到,有序集合的底层实现(之一)是跳跃表
跳跃表的实现 - Redis 设计与实现redisbook.com![b576295920c71de42153112a9d0f2b80.png](https://i-blog.csdnimg.cn/blog_migrate/1b97519dd3ee35a95a48da114ebc0940.jpeg)
从跳跃表中查找对象,对比链表,时间复杂度从O(N)提升到O(logN)。
再去查zset相关命令的复杂度,几个典型命令复杂度如下
- ZADD,O(logN)
- ZRANK,O(logN)
- ZSCORE,O(1)
ZADD、ZRANK的复杂度都是容易理解的,但ZSCORE的时间复杂度为什么是O(1)?
如果有序集合的底层实现是跳跃表,ZSCORE的复杂度应该和ZRANK一样,除非另有数据结构单独存储了对象的分值。进一步根据复杂度推断,这种数据结构应该哈希表。
答案在后续的章节中揭晓了
有序集合对象 - Redis 设计与实现redisbook.com