Redis常用命令——Hash篇

news2024/11/17 22:23:54

 

  前面我们讲述了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:要递增的浮点数值

  具体实例如下:

三、小结 

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

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

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

相关文章

css 渐变色边框

效果图&#xff1a; 代码&#xff1a; <style>:root{--br-radius: 12px;}.list{position: relative;}.list_tle{margin-top: 15px;margin-bottom: 5px;}.item{position: relative;display: inline-flex;} .br1 {padding: 10px 16px;clip-path: inset(0 round 6px);borde…

【C++】挑战与机遇并存的编程语言—前序

C&#xff1a;挑战与机遇并存的编程语言 一、C的难点与挑战二、C的学习方法与策略三、C的实战应用与代码实例 在当今科技飞速发展的时代&#xff0c;编程语言的选择对于每一个开发者来说都至关重要。C&#xff0c;作为一种历史悠久且功能强大的编程语言&#xff0c;一直在软件开…

el-date-picker限制时间选择,不能选择当前日期之后时间

要求&#xff1a;时间选择不能超过当前日期之后的 效果&#xff1a; 结构代码&#xff1a;&#xff1a; <el-form-item label"时间&#xff1a;"><el-date-pickerv-model"time"type"datetimerange"range-separator"至"start…

【算法】重建二叉树并进行后序遍历的Java实现

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

做抖店如何避免被同行内卷?这5点建议,可以解决这个问题

我是王路飞。 都说2024年的抖店不赚钱了&#xff0c;商家太多了&#xff0c;太内卷了&#xff0c;一点都不好做~ 那为什么依然有很多商家在坚持做呢&#xff1f;为什么依然有很多新手入局呢&#xff1f; 无非是抖店确实能带来可观的利润回报罢了。 那如何避免被同行内卷呢&…

Linux-应用编程学习笔记(二、文件I/O、标准I/O)

一、文件I/O基础 文件 I/O 指的是对文件的输入/输出操作&#xff0c;就是对文件的读写操作。Linux 下一切皆文件。 1.1 文件描述符 在 open函数执行成功的情况下&#xff0c; 会返回一个非负整数&#xff0c; 该返回值就是一个文件描述符&#xff08;file descriptor&#x…

前端开发框架Angular

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl Angular概述 Angular是由Google开发并维护的一款开源前端开发框架。它最初被设计为用于构建单页面应用&#xff08;SPA&#xff09;&#xff0c;但随着版本的更新和发展&am…

ssm招聘信息管理系统-计算机毕业设计源码78049

摘 要 由于数据库和数据仓库技术的快速发展&#xff0c;招聘客户管理系统建设越来越向模块化、智能化、自我服务和管理科学化的方向发展。招聘客户系统对处理对象和服务对象&#xff0c;自身的系统结构&#xff0c;处理能力&#xff0c;都将适应技术发展的要求发生重大的变化。…

springboot集成nacos

springboot集成nacos 1.版本2. POM依赖3. nacos服务3.1 下载nacos压缩包3.2 启动nacos 4. yaml配置5.Demo5.1 配置中心简单格式获取方式普通方式还可以再启动类上添加注解完成5.2 获取json格式的demo5.2 自动注册根据yaml配置 1.版本 nacos版本:2.3.2 springboot版本&#xff…

OpenHarmony 实战开发——内核对象队列之算法详解

前言 OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09; LiteOS-M 内核是面向 IoT 领域构建的轻量级物联网操作系统内核&#xff0c;具有小体积、低功耗、高性能的特点。在嵌入式领域的开发工作中&#xff0c;无论是自研还是移植系统&#xff0c;均绕不开…

IT行业现状与未来趋势简单分析

你眼中的IT行业现状与未来趋势 随着技术的不断进步&#xff0c;IT行业已成为推动全球经济和社会发展的关键力量。从云计算、大数据、人工智能到物联网、5G通信和区块链&#xff0c;这些技术正在重塑我们的生活和工作方式。你眼中IT行业的现状及未来发展趋势是怎么样的&#xf…

AI视频教程下载:使用ChatGPT进行商务写作

你将学到什么&#xff1f; 学习如何将ChatGPT集成到你的写作过程中&#xff0c;并有效地将其用作商务写作的个人写作助手。 学习如何使用ChatGPT生成想法&#xff0c;提高你的书面沟通的结构、清晰度和连贯性。 你将学习使用ChatGPT的最佳实践&#xff0c;包括如何自定义其设…

【Unity程序】Unity游戏开发中常用的设计模式【一】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

堆溢出bug定位调试修复

最近代码出了bug&#xff0c;堆溢出。 debug下一切正常&#xff0c; release时随机崩溃到某几个地方&#xff0c; 报错是: Critical error detected c0000374 不是完全随机崩溃&#xff0c;崩溃到某几个正常的地方&#xff0c;开始怀疑是不是这几个地方真的有什么bug, 由于使…

极致产品力|从toB到toC,年销4.2亿份的冻干品牌是如何炼成的?

天野食品是日本冻干食品长红40年的品牌&#xff0c;从制造焦糖的小工厂&#xff0c;转变为日本冻干速食的行业第一&#xff0c;它是如何做到的呢? 深耕TOB业务&#xff0c;如何在ToC业务创造增长 天野公司以冻干食品闻名但并非以此起家。自1940年成立以来&#xff0c;便以染料…

智慧冶金:TSINGSEE青犀AI+视频技术助力打造高效、安全的生产环境

一、建设背景 冶金行业因其特殊的生产环境和工艺要求&#xff0c;对安全生产、环境保护以及质量监控等方面有着极高的要求。因此&#xff0c;将视频智能监控技术引入冶金行业&#xff0c;不仅有助于提升生产效率&#xff0c;更能有效保障生产安全&#xff0c;降低事故风险。 …

5.28 学习总结

一.CSS学习(一) 一、CSS简介 1、什么是CSS CSS&#xff1a;Cascading Style Sheet 层叠样式表是一组样式设置的规则&#xff0c;用于控制页面的外观样式 2、为什么使用CSS 实现内容与样式的分离&#xff0c;便于团队开发样式复用&#xff0c;便于网站的后期维护页面的精确…

跨境卖家必看!亚马逊商品3D建模怎么实现?

亚马逊引领3D内容革命&#xff0c;助力卖家提升商品展现力 亚马逊于2023年12月发布了一项重大公告&#xff0c;正式宣布&#xff1a;“平台将不再接受将360图像上传至产品详细页面的请求&#xff0c;而是全面采用3D模型来替代。”这一决策无疑预示着3D内容将在亚马逊平台上迎来…

区间类贪心,蓝桥云课 打折

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 0打折 - 蓝桥云课 (lanqiao.cn) 二、解题报告 1、思路分析 思路很简单&am…

Kubernetes(k8s) 实战集群部署Discuz x3.5 k8s使用本地私有仓库镜像 Centos 8.5 安装部署NFS

本文环境可参考: 详细教程 Centos8.5 基于 k8s v1.30.1 部署高可用集群 kubeadm 安装 kubernetes v1.30.1 docker集群搭建 延长证书有效期-CSDN博客 1 集群部署&#xff0c;需要PV&#xff0c;安装NFS #master11,slave12,slave13都安装 yum install nfs-utils rpcbind -y2 …