Redis入门到通关之Redis数据结构-ZSet篇

文章目录



在这里插入图片描述

ZSet也就是SortedSet,其中每一个元素都需要指定一个 score 值和 member 值:

  • 可以根据score值排序后
  • member必须唯一
  • 可以根据member查询分数

在这里插入图片描述
因此,zset底层数据结构必须满足键值存储、键必须唯一、可排序这几个需求。之前学习的哪种编码结构可以满足?

  • SkipList:可以排序,并且可以同时存储score和ele值(member)
  • HT(Dict):可以键值存储,并且可以根据key找value

在这里插入图片描述

在这里插入图片描述

当元素数量不多时,HT 和 SkipList 的优势不明显,而且更耗内存。因此zset还会采用 ZipList 结构来节省内存,不过需要同时满足两个条件:

  • 元素数量小于zset_max_ziplist_entries,默认值128
  • 每个元素都小于zset_max_ziplist_value字节,默认值64

ziplist 本身没有排序功能,而且没有键值对的概念,因此需要有zset通过编码实现:

  • ZipList是连续内存,因此score和element是紧挨在一起的两个entry, element在前,score在后
  • score越小越接近队首,score越大越接近队尾,按照score值升序排列

在这里插入图片描述

在这里插入图片描述




底下的就别看了

Redis 中的 ZSet(有序集合)是一种特殊的数据结构,它在每个元素的基础上关联了一个分值(score),用来对集合中的元素进行排序。在 Redis 中,ZSet 主要通过跳跃表(skiplist)或者压缩列表和哈希表的混合结构来实现。

跳跃表:
跳跃表是一种有序数据结构,类似于链表,但通过添加多级索引实现了快速查找。在 Redis 的 ZSet 中,跳跃表常被用来存储有序集合,因为它支持快速的插入、删除和范围查找操作,平均时间复杂度为 O(log n)。

压缩列表和哈希表:
对于元素数量较少的有序集合,Redis 也可以使用压缩列表和哈希表的混合结构来存储数据。这种结构在节省内存空间方面比跳跃表更有优势,但在插入和删除操作上可能没有跳跃表高效。

Redis 的 ZSet 类型通过跳跃表或者压缩列表和哈希表的混合结构来实现有序集合。这些不同的底层数据结构使得 Redis 能够高效地支持 ZSet 的各种操作需求。


在这里插入图片描述



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/2000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32自动光控窗帘程序+Proteus仿真图 H桥L298驱动电机

目录 1、前言 2、仿真图 3、源程序 资料下载地址:STM32自动光控窗帘程序Proteus仿真图 H桥L298驱动电机 1、前言 基于STM32F103设计的智能光控窗帘,包含STM32芯片、光敏电阻、LCD1602显示屏、电机驱动控制模块等。 备注:通过ARM内部的…

管理 Python 项目的艺术:在 PyCharm 中使用虚拟环境(以BPnP为例)

在 PyCharm 中使用虚拟环境对于 Python 项目开发具有多方面的重要作用,这些作用体现在提升项目管理的效率、保障代码的可运行性以及维护项目的长期稳定性等方面。以下是使用虚拟环境的几个关键好处: 1. 依赖管理和隔离 虚拟环境允许每个项目拥有…

Hadoop3:大数据生态体系

一、技术层面 通过下面这张图,我们可以大概确定,在大数据行业里,自己的学习路线。 个人认为,Hadoop集群一旦搭建完工,基本就是个把人运维的事情 主要岗位应该是集中在数据计算层,尤其是实时计算&#xff…

单调栈(C/C++)

引言: 单调队列和单调栈都是一种数据结构,应用十分广泛,在蓝桥杯、ICPC、CCPC等著名编程赛事都是重点的算法,今天博主将自己对单调栈与单调队列的理解以及刷题的经验,用一篇博客分享给大家,希望对大家有所…

华为OD机试真题-幼儿园篮球游戏-2023年OD统一考试(C卷D卷)

题目描述: 幼儿园里有一个放倒的圆桶,它是一个 线性结构,允许在桶的右边将篮球放入,可以在桶的左边和右边将篮球取出。每个篮球有单独的编号,老师可以连续放入一个或多个篮球,小朋友可以在桶左边或右边将篮球取出,当桶只有一个篮球的情况下,必须从左边取出。 如老师按顺…

深圳杯东三省联赛数学建模挑战赛2024D题

音板的振动模态分析与参数识别 音乐来自乐器,乐器产生于制造,而制造需要数理逻辑。 在20世纪末,我国就已经形成了较为完整的乐器工业生产体系,基本可以加工世界上所有大类乐器,门类齐全,品种众多。其中&am…

Spring Boot中的SSE与缓存集成:使用Redis加速事件推送

Spring Boot中的SSE与缓存集成:使用Redis加速事件推送 实时事件推送在现代Web应用中变得越来越重要,而Spring Server-Sent Events(SSE)为实现实时推送提供了一种简单而有效的方式。然而,随着应用规模的增长&#xff0c…

【UI】element-ui的el-dialog的遮罩层在模态框的前面bug

最近在写element ui 的时候使用dialog组件,偶然出现了这种情况 原因: 是因为遮罩层插入进了body标签下,z-index高于当前父元素。 解决:在el-dialog标签里加上:modal-append-to-body"false"就可以了。 饿了么官网文档&a…

Ardupilot OpenIPC 基于WFB-NG构架分析和数据链路思考

Ardupilot & OpenIPC & 基于WFB-NG构架分析和数据链路思考 1. 源由2. OpenIPC安装2.1 安装2.2 配置2.2.1 天空端配置文件2.2.2 地面端配置文件 2.3 当前配置选择 3. WFB-NG安装3.1 RTL8812AU安装3.1.1 驱动安装3.1.2 定位设备 3.2 wfb-ng安装3.2.1 传输层安装3.2.2 配置…

照片相似性搜索引擎Embed-Photos;赋予大型语言模型(LLMs)视频和音频理解能力;OOTDiffusion的基础上可控制的服装驱动图像合成

✨ 1: Magic Clothing Magic Clothing是一个以可控制的服装驱动图像合成为核心的技术项目,建立在OOTDiffusion的基础上 Magic Clothing是一个以可控制的服装驱动图像合成为核心的技术项目,建立在OOTDiffusion的基础上。通过使用Magic Clothing&#xf…

Jenkins CI/CD 持续集成专题二 Jenkins 相关问题汇总

一 问题一 pod [!] Unknown command: package 1.1 如果没有安装过cocoapods-packager,安装cocoapods-packager,sudo gem install cocoapods-packager 1.2 如果已经安装cocoapods-packager,还是出现上面的错误,有可能是pod的安…

javaScript数组-(进阶算法)-计算滑动窗口最大值

滑动窗口 给定数组中的连续子数组,使其和达到最大值,并记录该子数组的起始和结束索引。最后,将最大和及其起始和结束索引存储在数组当中。 const arr [-1,-2,3,9,-4,8];let max null; let sum null;let i0,j0;let length arr.length;if…

什么是康养专业产教融合实训中心

康养专业产教融合实训中心是高等教育体系中的一种创新型教学设施,它整合了产业实践与教学研究的双重功能,旨在培养适应康养产业发展需求的专业人才。这种实训中心通过深度对接康养产业链上的各个环节,创建一个集教学、实训、科研、服务于一体…

什么是中医养生康复实训中心

中医养生康复实训中心是高等教育机构中专门设立的,集教学、实践、研究于一体的综合性教育平台,主要面向中医养生康复、针灸推拿、康复治疗技术等专业学生,目的是传承和发扬中医养生康复理念,培养具有扎实中医理论基础和实践经验的…

防、治、管融合一体化旅居健康守护系统

随着人口老龄化趋势的加剧和人们生活水平的提高,养老服务需求不断增长。旅居养老作为一种新型的养老模式,逐渐受到广大老年人的青睐。在生命健康服务运营平台中,为了给老人提供全方位、个性化的生命健康服务,我们平台也特意开设了…

31 信号量

概念 共享内存在通信的过程中,没有任何保护机制。当A进程写入了一部分,就被B、拿走了,导致双方发和收的数据不完整,数据不一致问题 1.A和B看到同一份资源,共享资源,如果不加保护,会导致数据不…

Uni-App 生命周期

在 Uni-App 中,页面和组件都有自己的生命周期函数,以下是一些常用的生命周期函数: 页面生命周期函数: onLoad: 页面加载时触发 onShow: 页面显示时触发 onReady: 页面初次渲染完成时触发 onHide: 页面隐藏时触发 onUnload: …

PyCharm添加外部工具

QtDesigner 可视化UI设计客户端工具 路径:File | Settings | Tools | External Tools点号,给External Tools组添加一个条目,填写如下内容 Name:QtDesignerProgram:C:\Users\用户名\AppData\Local\Programs\Python\Py…

在誉天学习云计算HCIE,担心考试考不过?

誉天定制化课程内容覆盖了所有考试重点,可以系统地掌握理论与实践知识。 对于笔试,类似于备考驾照理论学习阶段,誉天为大家提供在线模拟测试系统,帮助大家掌握云计算笔试考点。笔试通过后,18个月内(一年半…

【QT进阶】Qt http编程之nlohmann json库使用的简单介绍

往期回顾 【QT进阶】Qt http编程之http相关类的简单介绍-CSDN博客 【QT进阶】Qt http编程之用户登录注册功能实现-CSDN博客 【QT进阶】Qt http编程之json解析的简单介绍-CSDN博客 【QT进阶】Qt http编程之nlohmann json库使用的简单介绍 一、nlohman json库 1、C常用Json库 J…