写点什么

还晓得吗,Redis 的 zset 怎么实现的?

作者:知识浅谈
  • 2022 年 9 月 02 日
    吉林
  • 本文字数:588 字

    阅读完需:约 2 分钟

还晓得吗,Redis 的 zset 怎么实现的?

🍁 作者:知识浅谈,CSDN 博客专家,阿里云签约博主,InfoQ 签约博主,华为云云享专家

📌 擅长领域:全栈工程师、爬虫、ACM 算法

💒 公众号:知识浅谈


Redis 的 zset 怎么实现的总结🤞这个还晓得吗🤞


正菜来了⛳⛳⛳

🎈Zset 的底层实现

zset 是一个有序的 set 集合,是因为里边的值对应一个 score,排序的时候是按照 score 的大小来进行排序的。


zset 底层的结构也是不一样的。


1️⃣ziplist(压缩列表):当 zset 中的数据量小于 128 个,每个小于 64 字节,则就使用这个类型


2️⃣skiplist(跳表):当 zset 中的数据量大于 128 或者有元素大于 64 字节的,使用跳表,具体的跳表,自行查找即可,这个简单。


之所以会进行转换,是因为当数据小的时候用压缩表存储的空间更小,当数据量大的时候,使用跳表更便于查找。

🎈Zset 为什么使用跳表而不是 B+树或者红黑树

温馨提醒:这个有点多,请仔细看下去


之所以使用跳表不使用 B+树和红黑树


  1. 对于 B+树来说,因为 B+树使用的结构是一个页 16k 对应 B+树的一个节点,是为了方便数据库中对磁盘的时候进行 IO,但是 redis 是在内存中,所以 B+树并不如跳表好用。

  2. 对于红黑树来说,因为红黑树使用的是二叉树的结构,所以在单个数据查询的时候和跳表差不多,但是在范围查询上不如跳表,因为跳表进行范围查询的时候,找到开始的点,直接遍历到最后位置即可,但是红黑树需要一个一个查找,查询效率上也是不如跳表。

🍚总结

以上就是关于 Redis 中 Zset 是怎么实现的介绍,希望有所帮助。

发布于: 2022 年 09 月 02 日阅读数: 15
用户头像

知识浅谈

关注

公众号:知识浅谈 2022.06.22 加入

🍁 作者:知识浅谈,InfoQ签约作者,CSDN博客专家/签约讲师,华为云云享专家,阿里云签约博主 📌 擅长领域:全栈工程师、爬虫、ACM算法 💒 公众号:知识浅谈 🔥 联系方式vx:zsqtcc

评论

发布
暂无评论
还晓得吗,Redis 的 zset 怎么实现的?_9月月更_知识浅谈_InfoQ写作社区