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

举报
知识浅谈 发表于 2022/09/02 08:47:00 2022/09/02
【摘要】 还晓得吗,Redis 的 zset 怎么实现的?

在这里插入图片描述

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

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是怎么实现的介绍,希望有所帮助。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。