【Redis】Zset和Hash类型

news2024/12/25 23:47:49

Hash类型

Redis hash 是一个键值对集合。Redis hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。

Hash 类型的底层数据结构是由压缩列表或哈希表实现的:

  • 如果哈希类型元素小于512个,所有值的大小小于64字节。Redis会采用ziplist结构实现Hash类型。
  • 其他情况,会使用哈希表实现Hash类型

常用命令

存储一个哈希表key的键值

  • hset 给集合中的 键赋值

获取哈希表key对应的field键值

  • hget 从集合取出 value

批量设置hash值和批量获取hash值

  • hmset … 批量设置hash的值
  • hmget key1 field [field …]

删除hash键

  • hdel key field [field …]
  • 批量删除 hmdel key field1 field2

其他命令

  • hkeys 列出该hash集合的所有field
  • hvals 列出该hash集合的所有value
  • hincrby 为哈希表 key 中的域 field 的值加上增量 1 -1
  • hsetnx 将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在 .

应用场景

Hash类型适合用来存储对象。比如我们将下面表中的数据存储:

image-20221213232746109

相当于我们要在Redis中存储两个对象

image-20221213234141249

Zset类型

Redis有序集合zset与普通集合set非常相似,是一个没有重复元素的字符串集合。

不同之处是有序集合的每个成员都关联了一个评分(score),这个评分(score)被用来按照从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分可以是重复了 。

因为元素是有序的, 所以你也可以很快的根据评分(score)或者次序(position)来获取一个范围的元素。

访问有序集合的中间元素也是非常快的,因此你能够使用有序集合作为一个没有重复成员的智能列表。

image-20221213235210726

底层实现

Zset类型的底层数据机构由跳表skiplist实现,跳表保证了链表的有序性。

下面的博客中,详细介绍了跳表的原理和实现:

跳表的原理和实现

常用命令

将一个或多个 member 元素及其 score 值加入到有序集 key 当中。

  • zadd …

删除元素

  • zrem key member [member…]

返回有序集合key中元素member的分值

  • zscore key member

返回有序集合key中元素个数

  • zcard key

返回有序集 key 中,下标在 之间的元素 ,带WITHSCORES,可以让分数一起和值返回到结果集。

  • zrange [WITHSCORES]

倒序获取有序集合key从start下标到stop下标的元素

  • zrevrange key start stop [WITHSCORES]

返回有序集合中指定分数区间内的成员,分数由低到高排序。

  • zrangebyscore key min max [withscores] [limit offset count]
  • zrevrangebyscore key maxmin [withscores] [limit offset count]

其他命令

  • zincrby 为元素的score加上增量
  • zrem 删除该集合下,指定值的元素
  • zcount 统计该集合,分数区间内的元素个数
  • zrank 返回该值在集合中的排名,从0开始。

应用场景

Zset 类型(Sorted Set,有序集合) 可以根据元素的权重来排序,我们可以自己来决定每个元素的权重值。

在面对需要展示最新列表、排行榜等场景时,如果数据更新频繁或者需要分页显示,可以优先考虑使用 Sorted Set。

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

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

相关文章

一不小心手动实现了k8s的自动化构建

背景 由于公司需要对公司内部的软件需要对外部署,对于前端的部署,需要一套部署的方案。尝试了写了一个适配多模块可配置的部署脚本,本文对实现的过程进行一个记录。 目的 脚本采用的是node,前端同学的首选。脚本的目的就是实现k8s…

企业在ERP系统下的全面预算管理系统的实现

现代企业的发展离不开各种管理系统的建立和应用,针对于企业预算管理而言,全面的管理系统对于企业实现现代化管理有着较为深入的影响,ERP系统可以帮助企业更好的实现此项功能,本文就是在此背景下展开论述的。 编辑搜图 一、全面预算…

文件上传自动化测试方案

一、概述 【测试地址】:https://pan.baidu.com 【测试工具】selenium、requests 【脚本语言】Python 【运行环境】Windows 百度网盘作为文件存储及分享的平台,核心功能大部分是对文件的操作,如果要对它进行自动化测试,优先覆…

马克思主义基本原理笔记(黄色标记要求会背)

马克思主义基本组成部分 马克思主义哲学马克思主义政治经济学科学社会主义历史学、政治学、法学、文化学、新闻学、军事学等 唯物主义,唯心主义划分标准 唯物主义:把世界的本原归结为物质,主张物质是第一性,意识第二性&#xff0c…

Docker容器网络入门

1、查看默认网络模式 首先假定已经安装好docker了,不会安装的可以看我其他文章,很简单。docker安装好后默认是提供三种网络模式(bridge、host、none),可以使用命令docker network ls查看网络状态 [rootlocalhost ~]#…

构建平衡二叉树(数据结构)

构建二又平衡树,插入的节点序列依次为:70 60 40 90 80 98 我们先了解一个构造规则 1、将每一个节点按照顺序依次使用 2、先将第一个节点画在图上,将第二个节点与第一个节点比较, (1)若比该节点大,第二个…

飞行员兄弟(蓝桥杯C/C++B组真题详解)

目录 题目链接:116. 飞行员兄弟 - AcWing题库​​​​​​ 题目思路: 代码详解: 题目链接:116. 飞行员兄弟 - AcWing题库​​​​​​ 题目思路: 1.我们可以知道 对于任意一个点 重复的按两次的话 回不改变原状…

ADI Blackfin DSP处理器-BF533的开发详解43:图像处理专题-ReverseColor (图像反色处理)(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像反色处理,代码运行时,会通过文件系统打开工程文件根目下" …/ImageView"路径中的 tes…

Linux下局域网yum源配置

文章目录一 需求二 搭建环境准备三 服务端1 创建镜像存放目录与挂载目录2 上传centos7镜像3 对镜像文件进行挂载4 配置本地yum源5 对挂载点建立软链接6 安装http服务7 浏览器验证http服务是否正常启动四 客户端1 修改yum配置文件2 查看yum源一 需求 公司集群架构中&#xff0c…

【linux】之大数据基础平台实施及运维上

一、大数据介绍 学习目标 能够了解为什么使用大数据技术 能够了解大数据指的是什么 为什么使用大数据技术? 数据量越来越大 数据量越来越大数据分析的实时性越来越强数据结果的应用越来越广泛 结论:我们需要使用大数据技术 大数据的定义 大数据是收…

GC垃圾回收器

分代收集器 新生代回收器 Serial:复制算法 | 单线程 | 适合内存不大的场景 ParNew:复制算法 | 多线程 | Serial收集器多线程版本 Parallel Scavenge:复制算法 | 多线程 | 类ParNew,更关注吞吐量 老年代回收器 Serial Old&#xf…

postgresql文件结构

一、控制文件 pg_controldata $PGDATA 二、数据文件 pg中,每个索引、每个表都是一个单独的文件,pg中称为page(也称为段),默认是每个大于1G的page会被分割。例如某个表有200g的大小,那么会被分割为200个文件存储 sel…

Gateway限流的使用

目录 1. 限流的使用场景 2. gateway限流实现 2.1 前提: 2.2 导入依赖包 2.3 在项目配置文件中配置redis​编辑 2.4 开发限流需要的Bean​编辑 2.5 为服务配置限流参数 2.6 压力测试 3. 熔断 3.1 熔断的使用场景 1. 限流的使用场景 为什么限流 限流就是限制…

web网页设计期末课程大作业 基于HTML+CSS+JavaScript制作八大菜系介绍舌尖上的美食5页

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

4、Metasploit系列----未知目标测试

靶机Metasploitable2:192.168.11.105 攻击机kail:192.168.11.106 一、创建工作空间 显示数据库未连接:使用msfdb init对数据进行初始化:db_status显示数据库已连接。使用命令workspace -a 192.168.11.105创建目标工作空间。二、信…

Spring Batch 批处理-作业参数校验

引言 接着上篇:Spring Batch 批处理-作业参数设置与获取,了解作业参数设置与获取后,本篇就来了解一下Spirng Batch 作业参数的校验。 作业参数校验 当外部传入的参数进入步骤处理时,我们需要确保参数符合期望。比如&#xff1a…

前端实现电子签名(web、移动端)通用

前言 在现在的时代发展中,从以前的手写签名,逐渐衍生出了电子签名。电子签名和纸质手写签名一样具有法律效应。电子签名目前主要还是在需要个人确认的产品环节和司法类相关的产品上较多。 举个常用的例子,大家都用过钉钉,钉钉上…

对于双欧拉角(正反欧拉角)的一些理解和思考

文章目录一、正反欧拉角定义二、相关文献阐述三、对正反欧拉角的思考四、参考代码五、参考文献最近看到有人讨论“双欧拉角”或者“正反欧拉角”的问题,因为自己之前没听说过这个概念,为了避免无知,因此找了一些文献进行学习和理解。不过基于…

mysql优化,SELECT语句创建理想索引

思考索引的问题: 1.为什么主键索引比非主键索引快? 2.为什么sql使用like关键字 “%XXX%”无法走索引,而“XXX%”可以? 3.为什么有索引的字段,数据量大了后,增删改会很慢? 一. 了解数据库索引的必…

ADI Blackfin DSP处理器-BF533的开发详解45:图像处理专题-ThresholdData (图像阈值分割处理)(含源码)

硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP软件 硬件链接 功能介绍 代码实现了图像阈值分割处理,代码运行时,会通过文件系统打开工程文件根目下" …/ImageView"路径中的…