【Redis】hash数据类型-常用命令

news2024/11/25 13:38:10

文章目录

  • 前置知识
  • 常用命令
    • HSET
    • HGET
    • HEXISTS
    • HDEL
    • HKEYS
    • HVALS
    • HGETALL
    • HMGET
    • 关于HMSET
    • HLEN
    • HSETNX
    • HINCRBY
    • HINCRBYFLOAT
  • 命令小结

前置知识

redis自身就是键值对结构了,哈希类型是指值本⾝⼜是⼀个键值对结构,形如key="key",value={{field1,value1},...,{fieldN,valueN}}

字符串和哈希类型对⽐

image-20231021164500828

哈希类型中的映射关系通常称为field-value,⽤于区分Redis整体的键值对(key-value),注意这⾥的value是指field对应的值,不是键(key)对应的值,注意value在不同上下⽂的作⽤


常用命令

HSET

设置hash中指定的字段(field)的值(value)

语法:HSET key field value [field value ...] 

时间复杂度:插⼊⼀组field为O(1),插⼊N组field为O(N) 返回值:添加成功的字段(filed-value)的个数

image-20231023114003405

HGET

获取hash中指定字段的值

语法:HGET key field 

返回值:字段对应的值或者nil

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


HEXISTS

判断hash中是否有指定的字段

语法:HEXISTS key field 	

返回值:1表⽰存在,0表⽰不存在

image-20231023114041084


HDEL

删除hash中指定的字段

语法:HDEL key field [field ...]

时间复杂度:删除⼀个元素为O(1).删除N个元素为O(N) 返回值:本次操作删除的字段个数

image-20231023114223197

注意:del删除的是key,hdel删除的是key当中的field字段


HKEYS

获取hash中的所有字段

语法:HKEYS key 

时间复杂度:O(N),N为field的个数(先根据key找到对应的hash,然后再遍历hash => 有一定的风险,因为不知道某个hash当中是否会存在大量的field) 返回值:字段列表

image-20231023114244638


HVALS

获取hash中的所有的值

语法:HVALS key 

时间复杂度:O(N),N为field的个数 返回值:所有的值

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


HGETALL

获取hash中的所有字段以及对应的值

语法:HGETALL key

时间复杂度:O(N),N为field的个数 返回值:字段和对应的值

image-20231023183458208


HMGET

⼀次获取hash中多个字段的值

语法: HMGET key field [field ...] 

时间复杂度:只查询⼀个元素为O(1),查询多个元素为O(N),N为查询元素个数 返回值:字段对应的值或者nil


注意:在使⽤HGETALL时,如果哈希元素个数⽐较多,会存在阻塞Redis的可能。如果开发⼈员只需要获取部分field,可以使⽤HMGET,如果⼀定要获取全部field,可以尝试使⽤HSCAN命令,该命令采⽤渐进式遍历哈希类型 =>敲一次命令遍历一小部分,返回下一次从哪个位置开始遍历,连续执行多次就可以完成整个遍历过程,此时时间就是可控的,不会阻塞redis服务器

image-20231023183741765

此时返回的多个value的顺序和field的顺序是匹配的


关于HMSET

其实有HMSET进行一次设置多个field和value,但是并不需要,因为hset已经支持一次设置多个field和value了


HLEN

获取hash中的所有字段的个数

语法:LEN key 

时间复杂度:O(1) 返回值:字段个数

image-20231023183634248


HSETNX

在字段(field)不存在的情况下,设置hash中的字段和值,如果存在,则失败

语法:HSETNX key field value 

返回值:1表⽰设置成功,0表⽰失败 时间复杂度:O(1)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


HINCRBY

将hash中字段对应的数值添加指定的值

语法:HINCRBY key field increment   #increment只能是整数(正数  负数  0),但是不能是浮点数

返回值:该字段变化之后的值 时间复杂度:O(1)

image-20231023183836478

HINCRBYFLOAT

语法:HINCRBYFLOAT key field increment			本质是HINCRBY的浮点数版本

返回值:该字段变化之后的值 时间复杂度:O(1)

image-20231023183957316


命令小结

image-20231021165557738

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

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

相关文章

哪一波最容易亏钱,昂首资本这样讲

有交易者咨询anzo capital昂首资本,按照波浪理论最容易亏钱是在第几波,通过调查得知80%的错误发生在第四波。所以对哪一波最容易亏钱,很有可能就是第四波。当然了如果能准确的判断第四波时,也可能获得相当丰厚的利润。 第四波通…

8 mysql中的索引2

一、索引的种类 1、 B树索引 1.**每个索引就是一颗B树**,二级索引不包含行记录的全部数据 2.叶子节点除了包含键值以外,每个叶子节点中的索引行中还包含了一个书签( bookmark) 3.B平衡树是一颗查找树,B树的叶子节点用来放数据的,并且所有叶…

仿mudou库one thread one loop式并发服务器

目录 1.实现目标 2.HTTP服务器 实现高性能服务器-Reactor模型 模块划分 SERVER模块: HTTP协议模块: 3.项目中的子功能 秒级定时任务实现 时间轮实现 正则库的简单使用 通⽤类型any类型的实现 4.SERVER服务器实现 日志宏的封装 缓冲区Buffer…

软件设计不是CRUD(4):耦合度的强弱(上)

在讨论如何稳定系统内各模块的分层设计前, 本文先介绍一下目前判断各模块间耦合度强弱的度量方式。这些度量方式,在实际工作中读者应该都涉及过,只是可能没有去做详细的划分归类。 1、模块间耦合强度度量 模块间的耦合强度分为以下几种&…

小仙女必备,1分钟就能做出精美的电子相册

不知道大家有没有这样的困惑,手机里的照片太多,长久以来很多照片都容易被忘记。这个时候我们就可以将照片制作成电子相册,方便我们随时回味那些照片里的故事。如何制作呢? 制作电子相册只需要一个简单实用的制作工具就可以轻松完成…

linux硬盘挂载(linux 修改某个磁盘挂载到新目录\lvm扩容)

文章目录 一、什么是硬盘挂载二、linux 修改某个磁盘挂载到新目录三、Esxi下扩容硬盘1. 判断一个已有的文件系统是否使用了LVM(逻辑卷管理)2. 原本文件系统没有使用lvm,还可以lvm扩容吗?3. 原有文件系统使用lvm场景下扩容(lvm扩容)了解LVMEsxi LVM扩容步…

C++模板编程与泛型编程之函数模板

文章目录 函数模板(第一部分)定义函数模板使用函数模板样例 两阶段翻译 Two-Phase Translation模板的编译和链接问题 多模板参数引入额外模板参数作为返回值类型让编译器自己找出返回值类型将返回值声明为两个模板参数的公共类型样例 默认模板参数样例 重载函数模板模板函数特化…

偏序关系用分治优化建图:ARC165F

https://atcoder.jp/contests/arc165/tasks/arc165_f 首先可以建图&#xff0c;然后变成求字典序最小的的拓扑排序 然后发现这样复杂度会炸&#xff0c;观察连边的条件是什么&#xff1a; l i < l j l_i<l_j li​<lj​ r i < r j r_i<r_j ri​<rj​ 这是个…

麒麟-v10系统添加字体方法

先找到需要添加的字库文件&#xff0c;一般为TTF文件。 例如&#xff1a;方正粗黑宋简体.ttf 在 /usr/share/fonts 路径下创建一个chines 文件夹 。 * * * 注意以下所有操作涉及到的操作命令&#xff0c;均需ROOT操作。 mkdir /usr/share/fonts/chines 三&#xff0e;将需…

Single Image Haze Removal Using Dark Channel Prior(暗通道先验)

去雾算法都会依赖于很强的先验以及假设&#xff0c;并结合相应的物理模型&#xff0c;完成去雾过程。本文作者何凯明及其团队通过大量的无雾图像和有雾图像&#xff0c;归纳总结出无雾图像在其对应的暗通道图像上具有极低的强度值&#xff08;趋近于0&#xff09;&#xff0c;并…

虚拟机没有桥接模式--物理机WiFi不见了--注册表修复

我们知道虚拟机有三种模式&#xff1a; vmnet0 桥接模式&#xff1b;vmnet1 仅主机模式&#xff1b;vmnet8 NAT模式 我自己以前一直用的NAT模式&#xff0c;今天突然要用到桥接模式&#xff0c;发现无法切换... 我下面这个是后面弄好了的&#xff0c;最开始是没有显示桥接模式…

运放电压跟随器为什么要加电阻

这个是运放构成的电压跟随器&#xff0c;他的特点是输出电压等于输入电压&#xff0c;它常常用来对信号进行隔离&#xff0c;缓冲和提高带载能力。 有时候我们还会在电压跟随器上加这两个电阻&#xff0c;其中R1主要是起保护作用&#xff0c;Rf主要是为了消除偏置电流对输出电压…

stable-diffusion-webui安装Wav2Lip

常见错误 1.错误&#xff1a;Torch is not able to use GPU; add --skip-torch-cuda-test to COMMANDLINE_ARGS variable to disable this check 修改代码&#xff1a; launch_utils.py 删除三个地方&#xff1a;

LangChain+LLM实战---文本分块(Chunking)方法

RAG是一个考验技术的工作 基于大模型的企业应用中很大一部分需求就是RAG——检索增强生成。 这个流程依然无法描述RAG的复杂性 RAG涉及的内容其实广泛&#xff0c;包括Embedding、分词分块、检索召回&#xff08;相似度匹配&#xff09;、chat系统、ReAct和Prompt优化等&…

Optional——优雅判空

初始化 Optional提供了三个初始化方法&#xff1a; SpringBootTest public class OptionalTest {Testpublic void testOptional() {Optional.empty();Optional.ofNullable(null);Optional.of(null);} }empty返回一个空的Optional对象。 of遇到空会报错&#xff0c;但是使用Op…

Python | 安装、环境配置及包的安装

Python | 安装、环境配置及包的安装 一、前言二、python安装及编辑器配置2.1 python安装2.2 python调试2.3 python编辑器 | PyCharm2.3.1 PyCharm下载2.3.2 PyCharm安装2.3.3 PyCharm启动界面2.3.4 PyCharm初步设置2.3.5 PyCharm环境配置(含Python Interpreter配置)2.3.5.1 New…

2003-2022年飞机航线信息数据

2003-2022年飞机航线信息数据 时间&#xff1a;2003-2022年指标&#xff1a;起点城市、起点城市所属地级市、起点城市所属省份、起点机场、终点城市、终点城市所属地级市、终点城市所属省份、终点机场、航空公司、航班、机型、出发时间、到达时间、准点率、班次_周一、班次_周…

pip安装apex报错ERROR: Could not build wheels for cryptacular.......

问题&#xff1a;在训练模型的时候需要安装apex包&#xff0c;遂即使用以下命令 pip install apex但是报错了&#xff0c;报错信息如下&#xff1a; WARNING: Building wheel for cryptacular failed: [Errno 2] No such file or directory: C:\\Users\\XXX\\AppData\\Local\…

Corel VideoStudio 会声会影2024剪辑中间的视频怎么删 剪辑中音乐太长怎么办

我很喜欢视频剪辑软件Corel VideoStudio 会声会影2024&#xff0c;因为它使用起来很有趣。它很容易使用&#xff0c;但仍然给你很多功能和力量。视频剪辑软件Corel VideoStudio 会声会影2023让我与世界分享我的想法&#xff01;“这个产品的功能非常多&#xff0c;我几乎没有触…

解决找不到msvcp120.dll,无法继续执行代码的办法,msvcp120.dll丢失的解决办法

在使用电脑的过程中出现了“找不到msvcp120.dll,无法继续执行代码”&#xff0c;通常出现这种错误的原因是因为电脑中的msvcp120.dll文件丢失&#xff0c;但是文件丢失就会导致电脑出现软件不能打开的情况&#xff0c;也可能会导致电脑出现其他的问题&#xff0c;所以今天就给大…