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:要递增的浮点数值

  具体实例如下:

三、小结 

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

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

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

相关文章

React 供应商选择组件 - 使用Ant Design渲染Select并与父组件Form同步数据

1、安装Ant Design的相关依赖: npm install antd ant-design/icons2、编写SupplierSelect组件的代码如下: import React, { useEffect, useState } from react; import { Select } from antd; import axios from axios;const { Option } Select;const…

Spring的FactoryBean多例问题

关于spring bean,我们了解的最多的还是单例,而多例bean,除了平时我们自己new的那些多实例外(但不属于IOC管理了),几乎很少能用到,而在spring 层面,FactoryBean刚好是多例的一个体现,…

【介绍下如何在SQL中添加数据】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

淘宝扭蛋机小程序:探索未知,扭出惊喜

在数字时代,我们一直在寻找一种新颖、有趣且充满惊喜的购物方式。淘宝扭蛋机小程序正是为了满足这一需求而诞生的创新之作,它将传统扭蛋机的乐趣与淘宝的丰富商品库完美结合,为您带来前所未有的购物体验。 打破传统,创新玩法 淘…

ABB焊接功能介绍

1.基本配置 1.2配置Robot Ware Arc 2.焊接语句 2.1直线焊接语句 过渡点指令必须位于起弧指令与熄弧指令之间,不能单独使用。 2.2直线焊接示例 2.3圆弧焊接语句 2.4圆弧焊接示例 2.5摆动参数 关于ABB焊接机器人摆动参数设定 一般情况下,主要设置以…

养老院管理系统基于springboot的养老院管理系统java项目

文章目录 养老院管理系统一、项目演示二、项目介绍三、系统部分功能截图四、部分代码展示五、底部获取项目源码(9.9¥带走) 养老院管理系统 一、项目演示 养老院管理系统 二、项目介绍 基于springboot的养老院管理系统 角色:超级…

再创佳绩丨达梦数据库一体机荣获2024数字中国创新大赛·信创赛道总决赛一等奖

5月24日,第七届数字中国建设峰会在福州盛大开幕,峰会内容安排包含开幕式、主论坛、分论坛、数字中国创新大赛、现场体验区及成果发布和专业工作会议等。武汉达梦数据库股份有限公司(以下简称达梦数据)受邀参加并在展、会、赛等多个环节深度参与。达梦全栈…

【数据结构与算法 | 基础篇】力扣232, 225

1. 力扣232 : 用栈实现队列 (1). 题 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作(push、pop、peek、empty): 实现 MyQueue 类: void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移…

dolphinscheduler standalone安装

官方文档:https://dolphinscheduler.apache.org/en-us/docs/3.1.3/guide/installation/standalone 1.安装(以放在/home为例) 下载见:https://download.csdn.net/download/taotao_guiwang/89311365 tar -xvzf apache-dolphinsche…

pytorch比较操作

文章目录 常用的比较操作1.torch.allclose()2.torch.argsort()3.torch.eq()4.torch.equal()5.torch.greater_equal()6.torch.gt()7.torch.isclose()8.torch.isfinite()9.torch.isif()10.torch.isposinf()11.torch.isneginf()12.torch.isnan()13.torch.kthvalue()14.torch.less_…

学习前端第四十一天(节点属性,特性和属性)

一、节点属性 1、nodeType属性,获取 DOM 节点类型 对于元素节点 elem.nodeType 1, 对于文本节点 elem.nodeType 3, 对于注释节点 elem.nodeType 8, 对于 document 对象 elem.nodeType 9, 2、nodeName和tagNa…

NLP技术发展和相关书籍分享

自然语言处理(Natural Language Processing,NLP)是计算机科学领域和人工智能领域的重要研究方向之一,旨在探索实现人与计算机之间用自然语言进行有效交流的理论与方法。它融合了语言学、计算机科学、机器学习、数学、认知心理学等…

C++中的异常处理

文章目录 前言一、异常处理的代码实现二、异常规范总结 前言 异常处理是一种在软件开发中用于处理程序运行时错误的机制。在C中,异常处理的基本思想是将异常情况与正常情况进行区分,当异常情况发生时,程序不会继续执行下去,而是转…

外卖系统源码解读:校园外卖APP开发全攻略

外卖系统源码解读:校园外卖APP开发全攻略 今天,小编将深入解读外卖系统的源码,详细介绍如何开发一款功能齐全的校园外卖APP,帮助开发者快速上手,打造出高质量的外卖应用。 一、需求分析 应具备以下基本功能&#xff…

idea的project structure下project [lauguage ]()level 没有java的sdk17选项如何导入

idea的project structure下project lauguage level 没有java的sdk17选项如何导入 别导入了,需要升级idea版本。idea中没有project language level没有17如何添加 - CSDN文库 别听这文章瞎扯淡 2021版本就是没有,直接卸载升级到最新版本就可以了。没办法…

关系型数据库的三范式理解

关系型数据库的三范式(Third Normal Form,3NF)是数据库设计中的一种规范化理论,用于减少数据冗余和提高数据一致性。三范式是建立在第一范式(1NF)和第二范式(2NF)的基础上的。以下是…

MySQL之创建高性能的索引(四)

创建高性能的索引 空间数据索引(R-Tree) MyISAM表支持空间索引,可以用作地理数据存储。和B-Tree索引不同,这类索引无须前缀查询。空间索引会从所有维度来索引数据。查询时,可以有效地使用任意维度来组合查询。必须使用MySQL的GIS相关函数如…

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

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

5.28总结

HTML 三剑客&#xff1a; JS CSS HTML 入门实例 新建一个test.html文件&#xff0c;内容如下 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wi…

央视网视频下载和花屏问题处理

央视网(www.cctv.com)视频下载往往是花屏的&#xff0c;如何处理呢&#xff1f; 如果您是IT技术开发者&#xff0c;那么您可以通过下面步骤自己实现。 用chrome浏览器&#xff0c;F2打开开发者工具&#xff0c;找到当前页面的network 然后找一个接口&#xff1a;https://vdn.a…