前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Redis】Redis 有序集合 Zset 操作 ( Zset 有序集合数据结构 | 普通链表 | 跳跃表 )

【Redis】Redis 有序集合 Zset 操作 ( Zset 有序集合数据结构 | 普通链表 | 跳跃表 )

作者头像
韩曙亮
发布2023-03-30 19:10:35
4160
发布2023-03-30 19:10:35
举报
文章被收录于专栏:韩曙亮的移动开发专栏

文章目录

一、Zset 有序集合数据结构


有序集合 Zset 的 底层 数据结构 类似于 Java 的 Map 数据结构 Map<String , Double> ,

  • Zset 中的 元素 是 Map 集合中的 键 ;
  • 元素 关联 的 评分 是 Map 集合中的 值 ,

Zset 有序集合 底层 是由 Hash 和 跳跃表 实现的 ;

  • Hash 中 存储了 元素 和 元素关联的评分 ,
    • Hash 中的 键 Field 是 元素
    • Hash 中的 值 Value 是 元素关联的评分 ;
  • 跳跃表 存储的值 是 元素的评分 , 使用 跳跃表 可以给 元素 进行排序 , 根据评分 获取 元素列表 ;

二、跳跃表


1、普通链表

有序链表 中 , 如果查找某个元素 , 只能 依次 进行查找 , 最坏情况下 , 需要比较 n 次才能找到 ;

从下面的 链表 中 需要找 6 次 , 才能找到 51 元素 ;

在这里插入图片描述
在这里插入图片描述

2、跳跃表

从下面的跳跃表中查找 51 元素 ;

在这里插入图片描述
在这里插入图片描述

该跳跃表 分为 3 层 ,

从最上层 第 2 层 开始查找 ,

找 51 元素 , 找到 1 , 比 51 小 , 那么 继续找 下一个节点 21 ,

51 比 21 大 , 继续找下一个节点 , 但是 第一层 没有 第三个节点 , 那么 跳转到 第 1 层 开始查找 ,

在 第 1 层 , 找到 21 后的 下一个节点 41 , 发现 比 51 小 , 继续找下一个节点 ,

第 1 层 的 61 节点 , 要比 51 要大 , 说明 该层 没有 要找的节点 , 从 41 节点 找到 第 0 层 , 继续找下一个节点 ,

第 0 层 41 节点 后 是 51 节点 , 此时就 找到了目的节点 ;

经过了 4 次查找 , 找打了 目标元素 , 跳跃表 效率 要高于 普通链表 ;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 一、Zset 有序集合数据结构
  • 二、跳跃表
    • 1、普通链表
      • 2、跳跃表
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档