Redis常用命令——Hash篇

 

  前面我们讲述了String的相关操作命令。本篇文章主要讲解Redis中数据结构Hash的相关操作命令。希望会对你有所帮助。

目录

一、Hash哈希

二、命令

HSET

HGET

HEXISTS

 HDEL

HKEYS

HVALS

HGETALL

HMGET

HLEN

HSETNX

HINCRBY 和 HINCRBYFLOAT

三、小结 


🙋‍♂️ 作者:@Ggggggtm 🙋‍♂️

👀 专栏:Redis 👀

💥 标题:Redis常用命令——Hash篇 💥

 ❣️ 寄语:与其忙着诉苦,不如低头赶路,奋路前行,终将遇到一番好风景 ❣️

一、Hash哈希

  Redis中存储的都是键值对,这些键值对本身就是用哈希的方式来组织的。我们要讲解的哈希是指的键值对中的 value。也就是 key 所对应的 value 的类型是Hash。value的Hash类型可以看作是一个键值对的容器,其中的键又被称为field(于区分 Redis 整体的键值对(key-value)),值被称为value。例如key = "key",value={ {field1, value1 } ,..., {fieldN, valueN } },Redis键值对和哈希类型二者的关系可以用下图来表示。

二、命令

HSET

  HSET是用于设置哈希数据结构中指定字段(field)的值(value)。其基本语法为:

HSET key field value [field value ...]

  使用HSET命令可以完成以下操作:

  • 如果字段field不存在,则创建一个新的字段,并将值设为value。
  • field所对应的value使用是String来存储的。
  • 如果字段field已经存在,则用新值覆盖旧值。

  设置成功后,返回设置filed成功的个数。具体实例如下:

HGET

 HGET命令用于获取存储在哈希数据结构中指定字段的值。其基本语法为:

HGET key field

  其中,key是哈希表的键名,field是要获取值的字段名。

  使用HGET命令可以实现以下操作:

  • 获取指定字段的值。
  • 如果指定字段不存在,返回nil。

  具体实例如下:

HEXISTS

  HEXISTS命令用于检查哈希数据结构中是否存在指定字段。其基本语法为:

HEXISTS key field

  其中,key是哈希表的键名,field是要检查是否存在的字段名。

  使用HEXISTS命令可以实现以下操作:

  • 检查指定字段是否存在于哈希表中。
  • 如果字段存在,则返回1;如果字段不存在,则返回0。

  具体实例如下:

HDEL

  HDEL命令用于从哈希数据结构中删除一个或多个字段。其基本语法为:

HDEL key field1 [field2 ...]

  其中,key是哈希表的键名,field1、field2等是要删除的字段名。

  使用HDEL命令可以实现以下操作:

  • 删除指定哈希表中的一个或多个字段。
  • 返回成功删除的字段数量,不包括那些不存在的字段。

  具体实例如下:

  注意:我们之前学的del命令,是用来删除指定的key,而hdel是用来删除哈希类型中的field的。

HKEYS

 hkeys命令用于获取指定哈希表中所有字段(field)的名称。其基本语法为:

HKEYS key

  其中 key 就是哈希表的键名。具体示例如下:

  注意:这个操作是先根据 key 找到对应的hash,时间复杂度O(1)。然后遍历hash打印出所有的 field,时间复杂度为O(n),这里的n是指的hash中的键值对个数。如果hash中的元素较多时,那么就会使该指令的执行时间过长,导致其他指令得不到快速的执行,进而引起一连串的不良效应。所以该操作是有风险的!

HVALS

  hvals命令用于获取指定哈希表中所有字段的值,与hkeys是相对应的。其基本语法为:

HVALS key

  其中 key 就是哈希表的键名。我们来看一下实例:

  注意:该命令与hkeys命令原理相同,都是有一定的操作风险的!

HGETALL

  hgetall命令用于获取指定哈希表中所有字段和值。可以理解为是hkeys和hvals两者相结合。其基本语法为:

 HGETALL key

  具体实例如下:

  其返回值是每两个为一个键值对,按顺序依次列出。同样,该操作命令的风险是比较大的,谨慎使用!

HMGET

   HMGET是用于同时获取哈希表中多个字段的值。它接受一个键名和一个或多个字段(field)作为参数,并返回与这些字段名对应的值。其基本语法为:

HMGET key field [field ...]

  我们看具体实例:

  前面我们学习了hset就可以一次设置多个field 和 value,但是hget只能一次获取一个field所对应的值。那么有hmset吗?答案是有的。但是我们实际上并不需要该命令。

HLEN

  HLEN是用于获取哈希表中字段数量的命令。其基本语法为:

HLEN key

  返回值就是key中所对应的field的个数。如果key不存在,那么返回0。具体实例如下:

  该指令的时间复杂度为O(1),是不需要遍历了。再插入或者删除指定的field时,会做出相应的统计。

HSETNX

  HSETNX是用于在哈希表中设置字段值的命令,只有在字段不存在时才会设置成功。如果字段已经存在,那么HSETNX命令将不会执行任何操作。语法:

HSETNX key field value

参数说明:

  • key:哈希表的键名。
  • field:要设置数值的字段名。
  • value:要设置的字段值。

  具体实例如下:

HINCRBY 和 HINCRBYFLOAT

  HINCRBY和HINCRBYFLOAT都是Redis中用于对哈希表中的字段值进行递增操作的命令,区别在于前者适用于整数值字段,后者适用于浮点数值字段。

  HINCRBY用于将哈希表中指定字段的整数值按指定增量增加。如果字段不存在,将会被创建并设置为增量值。该命令的语法如下: 

HINCRBY key field increment
  • key:哈希表的键名。
  • field:要递增数值的字段名。
  • increment:要递增的整数值。

  具体实例如下:

  HINCRBYFLOAT用于将哈希表中指定字段的浮点数值按指定增量增加。如果字段不存在,将会被创建并设置为增量值。该命令的语法如下: 

HINCRBYFLOAT key field increment
  • key:哈希表的键名。
  • field:要递增数值的字段名。
  • increment:要递增的浮点数值

  具体实例如下:

三、小结 

   下图为哈希类型表命令的效果、时间复杂度,开发人员可以参考此表,结合自身业务需求和数据大小选择合适的命令。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot整合RabbitMQ的快速使用教程

目录 一、引入依赖 二、配置rabbitmq的连接信息等 1、生产者配置 2、消费者配置 三、设置消息转换器 四、生产者代码示例 1、配置交换机和队列信息 2、生产消息代码 五、消费者代码示例 1、消费层代码 2、业务层代码 在分布式系统中,消息队列是一种重要…

【老王最佳实践-6】Spring 如何给静态变量注入值

有些时候,我们可能需要给静态变量注入 spring bean,尝试过使用 Autowired 给静态变量做注入的同学应该都能发现注入是失败的。 Autowired 给静态变量注入bean 失败的原因 spring 底层已经限制了,不能给静态属性注入值: 如果我…

【AI算法岗面试八股面经【超全整理】——机器学习】

AI算法岗面试八股面经【超全整理】 概率论信息论机器学习深度学习CVNLP 目录 1、回归损失函数2、分类损失函数3、误差(Error)、偏差(Bias)、方差(Variance)4、PCA(Principle Component Analysi…

数据库语法树优化

目录 一、σ、π、⋈ 1.选择σ 2.投影π 3.连接⋈ 二、 构建语法树 ① 解读sql语句 ② 写出关系代数表达式 ③ 画出语法树 三、优化语法树 四、练习 语法树优化方法 一、σ、π、⋈ 1.选择σ 选择就是在关系R中选择满足给定条件的诸元组。 通过条件SdeptIS选择出系别…

5,串口编程---实现简单的用串口发送接收数据

单片机通过串口向PC机发送数据 PC机通过串口接收单片机发过来的数据 1.UART和USART的区别: USART支持同步通信方式,可以通过外部时钟信号进行同步传输,而UART仅支持异步通信方式 本开发板STM32F103ZET6有5个串口,用串口1作调试串口,因为串…

【算法实战】每日一题:设计一个算法,用最少数量的矩形覆盖一系列宽度为d、高度为w的矩形,且使用矩形不能超出边界

题目 设计一个算法,用最少数量的矩形覆盖一系列宽度为d、高度为w的矩形建筑物侧墙,且矩形不能超出边界。 核心思路 考虑这种结构 前面递增后面一个与前面的某个高度一致,这时候考虑最下面的覆盖(即都是从最下面向上覆盖&#…

进程互斥经典问题(读写者问题、理发店问题)

目录 读写者问题 问题描述 问题分析 进程互斥问题三部曲 读者写者算法实现 一、找进程——确定进程关系 二、找主营业务 三、找同步约束 a.互斥 b.资源 c.配额 理发店问题 问题描述 问题分析 进程互斥问题三部曲 理发店问题算法实现 一、找进程——确定进程…

特朗普竞选带火PoliFi,以Bitget为例

以特朗普系列Meme币为代表的政治金融(PoliFi)概念币市场正在掀起热潮,前美国总统特朗普(Donald Trump)在本月稍早公开力挺加密货币,接着又在周二宣布接受比特币、以太币、SOL、USDC、DOGE…等政治献金,让相关通证高涨。 据CoinGecko数据&…

鲜花门店小程序开发流程:详细教程,让你轻松掌握

想要开发一款专属于自己鲜花门店的小程序吗?不知道从何开始?别担心,本文将为你提供详细的开发流程,帮助你轻松掌握。 1. 注册登录乔拓云网并进入操作后台 首先,你需要注册并登录乔拓云网,然后进入操作后台…

简单随机数据算法

文章目录 一,需求概述二,实现代码三、测试代码四、测试结果五、源码传送六、效果演示 一,需求概述 系统启动时,读取一组图片数据,通过接口返回给前台,要求: 图片随机相邻图片不重复 二&#…

AcWing 2568:树链剖分 ← 线段树+DFS

【题目来源】https://www.acwing.com/problem/content/2570/【题目描述】 给定一棵树,树中包含 n 个节点(编号 1∼n),其中第 i 个节点的权值为 ai。 初始时,1 号节点为树的根节点。 现在要对该树进行 m 次操作&#xf…

力扣225. 用队列实现栈

Problem: 225. 用队列实现栈 文章目录 题目描述:思路Code 题目描述: 思路 1.对一个queue模拟栈的操作,同时用一个int类型的变量topElem记录每次每次队列队尾的元素(也即是模拟stack中的stack的栈顶元素); 2…

Linux之单机项目部署

1、虚拟机(VMware)创建Linux系统 1.1、创建虚拟机 1.2、配置虚拟机IOS映射文件 1.3、虚拟机内部相关配置 等待加载即可,加载完后会弹出图形化界面,如图: 注意:一般我们做为管理员使用ROOT账号来操作&#x…

Tomcat端口配置

Tomcat是开源免费的服务器,其默认的端口为8080,本文讲述一下如何配置端口。 最后在浏览器中输入localhost:8888即可打开Tomcat界面

怎样打造一份个性化画册呢?我来教你

在这个数字化的时代,传统的照片已经不能满足我们对个性化回忆的需求。个性化画册,不仅能够承载我们的记忆,还能展现自我风格。今天,就让我来教你如何打造一份属于自己的个性化画册。 1.要制作电子杂志,首先需要选择一款适合自己的…

IT人的拖延——一放松就停不下来,耽误事?

拖延的表现 在我们的日常工作中,经常会面对这样一种情况:因为要做的Sprint ticket比较复杂或者长时间的集中注意力后,本来打算休息放松一下,刷刷剧,玩玩下游戏,但却一个不小心,没控制住时间&am…

【全开源】JAVA同城搬家系统源码小程序APP源码

JAVA同城搬家系统源码 特色功能: 强大的数据处理能力:JAVA提供了丰富的数据结构和算法,以及强大的并发处理能力,使得系统能够快速地处理大量的货物信息、司机信息、订单信息等,满足大规模物流的需求。智能路径规划&a…

常见5大开发进度盲点问题及解决方案

在软件开发项目中,识别并解决常见的进度管理盲点问题,对于确保项目按时、按预算、高质量完成至关重要。它直接关系到项目能否顺利进行,忽视任何一个问题,都可能导致项目延期、成本超支、质量下降,甚至项目失败。 因此&…

@ConfigurationProperties结合Nacos配置动态刷新之底层原理分析

Hello,我是大都督周瑜,本文给大家分析一下ConfigurationProperties结合Nacos配置动态刷新的底层原理,记得点赞、关注、分享哦! 公众号:IT周瑜 应用背景 假如在Nacos中有Data ID为common.yml的配置项: m…

数智赋能内涝治理,四信城市排水防涝解决方案保障城市安全运行

由强降雨、台风造成城市低洼处出现大量积水、内涝的情况时有发生,给人们出行带来了极大不便和安全隐患,甚至危及群众生命财产安全。 为降低内涝造成的损失,一方面我们要大力加强城市排水基础设施的建设;另一方面要全面掌握城市内涝…