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等著名编程赛事都是重点的算法,今天博主将自己对单调栈与单调队列的理解以及刷题的经验,用一篇博客分享给大家,希望对大家有所…

【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的安…

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

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

31 信号量

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

PyCharm添加外部工具

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

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

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

Docker 哲学 - docker save | load | export | import 及实践

当我们说 "归档文件包含了容器的所有文件,但不包含容器的元数据和配置",我们是指 docker export 命令导出的 tar 归档文件包含了容器的文件系统中的所有文件,包括应用程序、库、数据等。但是,这个归档文件不包含关于容器…

Python 网络与并发编程(一)

文章目录 并发编程介绍串行、并行与并发的区别进程、线程、协程的区别进程线程协程 并发编程解决方案同步和异步介绍 并发编程介绍 串行、并行与并发的区别 有任务A、B、C,一个CPU去执行他们,有几种方式 1、一个cpu按顺序执行ABC,这就是串行…

go语言并发实战——日志收集系统(六) 编写日志收集系统客户端

上节回顾 在上一篇文章中我们介绍了编写客户端的四个步骤,分别是: 读取配置文件,寻找日志路径初始化服务根据日志路径l来收集日志将收集到的日志发送Kafka中 关于上述的内容博主画了一个思维导图(有点丑,大家勉强看看&#xff0…

燃冬之yum、vim和你

了解了很多指令和权限,搞点真枪实弹来瞅瞅 学Linux不是天天就在那掰扯指令玩,也不是就研究那个权限 准备好迎接Linux相关工具的使用了么码农桑~ yum 软件包 什么是软件包呢? 首先来举个生活中常见点的例子:比如我的手机是华为…

Tensor张量的属性dim、type、size、shape、numel的使用方法介绍

本文重点 Tensor张量有一些常用的属性,我们可以通过这些基本的属性判断张量的类型,维度,以及元素个数,本节课程我们将对tensor属性进行简单的介绍。 代码 import torch import numpy as np atorch.Tensor(2,3,4) print(a) prin…

【论文笔记 | 异步联邦】 FedBuff

1. 论文信息 Federated Learning with Buffered Asynchronous Aggregation,International Conference on Artificial Intelligence and Statistics,2022,ccfc 2. introduction 2.1.1. 背景: 同步 FL ,随训练过程中…

AI视频分析技术的常用开源模型及TSINGSEE青犀AI视频识别分析能力介绍

AI视频分析技术是指利用人工智能技术来对视频数据进行分析和处理的技术。开源模型是指可以免费获取和使用的代码模型,可以帮助开发人员快速构建和部署AI视频分析应用程序。 以下是一些业内常用的用于AI视频分析技术的开源模型: OpenCV:Open…

给字符串添加加粗标签(AC自动机+Python)

可以暴力解决,但是为了锻炼一下ac自动机的编程,我们使用ac自动机。 ac自动机主要维护两个列表,一个列表ch,ch[f][idx]表示从父节点f向idx这个方向走,走到的节点。另一个列表nex,nex[i]表示节点i回跳边的节…