Redis -- hash哈希

news2024/11/19 21:21:56

马行软地易失蹄,人贪安逸易失


 目录

关于Redis的hash

hash命令

hset 

hget

hexists

hdel

hkeys

hvals  

hgetall

hmget

hlen

hsetnx

hash计数

hincrby

hincrbyfloat

小结


关于Redis的hash

        几乎所有的主流编程语言都提供了哈希(hash)类型,它们的叫法可能是哈希、字典、关联数组、映射。在 Redis 中,哈希类型是指值本身又是一个键值对结构,形如 key = "key",value = { {field1, value1 }, ..., {fieldN, valueN } },Redis 键值对和哈希类型二者的关系可以用图 2-15 来表示。

         redis自身本来就是键值对结构了,自身的键值对就是通过hash的方式来组织的。

        到了value这一层,value又可以是很多种类型,其中这节要讲的就是hash类型,同样是hash的形式来表示value。

hash命令

hset 

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

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

        返回值:添加的字段的个数。

        可以添加多个字段,多个字段之间使用空格间隔。

示例

        将一个key设置为hash,然后添加两个属性域:

        想要一个hset设置多个field和value,就可以直接写多个field和value,多个filed和value之间使用空格隔开:

hget

        既然可以设置hash,那么必然也可以查找hash。获取 hash 中指定字段的值。

语法:hget  key  filed

        时间复杂度:O(1)
        返回值:字段对应的值或者 nil。

示例:

        设置一个key的一个域名为field,也可以叫属性名,其值为test

        使用hget获取这个值:


        除了get和set,当然也有exists呀,那么hash的exists就是hexists。


hexists

        判断hash中是否有指定字段

语法:hexists key field

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

        时间复杂度O(1)

示例

        field1存在于key,所以返回1,field2不存在于key,所以返回0。


        有get,set,eixsts。那么必然也有del,对于hash的del那么就是hdel

hdel

        删除hash中指定key的指定字段。而不是删除key本身。删除key本身是使用del key。

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

        可以一次性输入多个field,多个field之间使用空格隔开。

        返回值:返回顺利被删除的field的个数。

示例

        删除一个不存在的field时候,返回0.

        直接del key将会删除整个hash 表。


        学习了hget,你就会发现,我每次都去hget某一个key,而且每一次只能获取一个字段,但是如果我想要获取整个字段集合呢??那么hget就有点力不从心了。所以下面这个命令就是解决这个问题。


hkeys

         把对应hash的key,然后将其key全部列出来。

语法:hkeys key

        时间复杂度:O(N),其中N表示此hash中key的个数。

演示

hvals  

        获取hash key中的所有的value

语法:hvals key

        时间复杂度O(N),N表示field的个数。

        返回值:所有的key对应的value值

示例

        设置三个域:

        获取他们的value:


        虽然有hkeys和hvals,但是所有的key和value都不“同窗”,不会在一个命令中全部显示出来,这个怎么处理?下面的命令就解决了这个问题。


hgetall

        获取hash中所有的值。

语法:hgetall key

        时间复杂度:O(N), N 为 field 的个数。

        返回值:所有的值,他们两两成对出现。

示例


hmget

        一次性获取多个hash key的field。

语法:hmget key field1 field2 ......

        此处返回值为对应的field的值,多个value的顺序是和输入的field顺序相一致。

示例


注意:redis也有hmset,但是hmset的功能hset已经提供,这里不再赘述。

        同时,上述的命令:hvals,hkeys,hgetall,都是 存在一定风险的命令,hash的域太多,执行会消耗较长的时间,从而阻塞redis。redsi提供了一个额外的命令处理这种问题:hscan,敲一次遍历一个,连续敲多次就可以全部遍历完成。


hlen

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

语法:HLEN key
        返回值:此key中的字段的个数。

示例:

        有如下这个hashkey:

        我们查看其字段个数:

hsetnx

        在字段不存在的情况下,设置 hash 中的字段和值。

语法:HSETNX key field value

        时间复杂度:O(1)。

        返回值:1 表示设置成功,0 表示失败。

示例:

        因为当前的key的fi字段不存在,所以设置成功返回1,如果再次hsetnx key f1就会失败:

hash计数

hincrby

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

语法:HINCRBY  key field increment

        返回值为计算之后的结果。

        时间复杂度O(1)

示例

hincrbyfloat

        HINCRBY 的浮点数版本。这里不再赘述。

小结

 

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

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

相关文章

基于极大似然法和最小二乘法系统参数辨识matlab仿真,包含GUI界面

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 1.极大似然法系统参数辨识 2. 最小二乘法系统参数辨识 5.完整程序 1.程序功能描述 分别对比基于极大似然法的系统参数辨识以及基于最小二乘法的系统参数辨识,输出起参数辨识收敛…

计算存储设备(Computational Storage Drive, CSD)

随着云计算、企业级应用以及物联网领域的飞速发展,当前的数据处理需求正以前所未有的规模增长,以满足存储行业不断变化的需求。这种增长导致网络带宽压力增大,并对主机计算资源(如内存和CPU)造成极大负担,进…

计算机网络实验二

目录 实验二 交换机的基本配置 1、实验目的 2、实验设备 (1)实验内容: (2)练习: 1.实验内容一:(交换机的配置方式) 2.实验内容二:(交换机…

碳汇的概念

碳汇的概念 在理解碳汇之前,首先理解“汇”,汇是指存储温室气体、气溶胶或温室气体化合物的库,例如土壤、海洋、森林等都是地球的重要碳库。根据《联合国气候变化框架公约》的定义,“碳汇”指从大气中清除二氧化碳等温室气体的过…

有没有合适写毕业论文的AI工具?

最近挺多同学在忙着写毕业论文,不断在“提交-打回-修改-提交”过程里循环着,好不容易写完了,还得考虑论文查重的问题!基哥作为一名曾经的毕业生,当然也体验过这种痛苦了。 但是,大人,时代变了&…

元素的显示与隐藏,精灵图,字体图标,CSSC三角

元素的显示与隐藏 类似网站广告,当我们点击关闭就不见了,但是我们重新刷新页面,会重新出现 本质:让元素在页面中隐藏或者显示出来。 1.display显示隐藏 2.visibility显示隐藏 3.overflow溢出显示隐藏 1.display属性(…

使用STM32 DMA实现高效数据传输的设计与优化

使用STM32的DMA功能可以有效地实现高效的数据传输。在下面的解释中,我将介绍如何设计和优化使用STM32 DMA进行高效数据传输的方法。同时,我将提供一些示例代码来帮助您理解和实践。 ✅作者简介:热爱科研的嵌入式开发者,修心和技术…

缓存相关问题记录解决

缓存相关问题 在这里我不得不说明,我写的博客都是我自己用心写的,我自己用心记录的,我写的很详细,所以会有点冗长,所以如果你能看的下去的化,会有所收获,我不想写那种copy的文章,因为对我来说没什么益处,我写的这篇博客,就是为了记录我缓存的相关问题,还有我自己的感悟,所以如果…

机器学习_12_梯度下降法、拉格朗日、KKT

文章目录 1 梯度下降法1.1 导数、梯度1.2 梯度下降法1.3 梯度下降法的优化思想1.4 梯度下降法的调优策略1.5 BGD、SGD、MBGD1.5.1 BGD、SGD、MBGD的区别 2 有约束的最优化问题3 拉格朗日乘子法3.1 拉格朗日乘子法理解3.2 对偶问题 4 KKT条件4.1 KKT条件理解4.2 KKT公式理解4.3 …

【DPI(Direct Programming Interface)_2024.02.01】

DPI接口:实现SV与C的交互 ① DPI_svc test.sv文件: 从C import task/function到SV 从SV export task到C 利用DPI调用C code访问register test.c文件: C调用apb_write驱动 ② dpi_perl test.sv文件: 利用DPI调用c code间接调…

【echarts】动态滚动趋势图,解决坐标轴数据太多遮挡覆盖问题

写在前面 业务场景x轴的文字太多&#xff0c;会出现遮挡问题&#xff0c;想到文字倾斜展示&#xff0c;页面不美观&#xff0c;于是想到使用滚动条优化趋势图。 <template><div id"storeDown" style"height: 400px;width:100%"/> </temp…

独立按键实验

轻触开关是一种电子开关&#xff0c;使用时,轻轻按开关按钮就可使开关接通&#xff0c;当松开手时,开关断开。我们使用的开关如下图&#xff1a; 按键在闭合和断开时&#xff0c;触点会存在抖动现象。 硬件消抖电路&#xff1a; 实现现象&#xff1a;下载程序后按下K1按键可以对…

C++类和对象知识点集合

又多又难的C类和对象知识点看这里了&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 文章目录 1.先看看类是咋用的2.访问限定符3.类中的声明和定义分离4.类对象模型4.1 空类的大小4.2 成员访问 5.内存对齐6.this指针6.1 this在哪里&#xff1f;6.2 (类对象及thi…

Mybatis 自定义ResultHandler(结果处理器)正确使用姿势

阅读指引 一、使用场景二、前提条件三、源码对照四、使用示例目标实现方式 一、使用场景 对Mybatis查询的结果集进行统一批量处理&#xff0c;如进行类型转换、数据变更等等。 二、前提条件 必须是查询语句。mapper方法的返回值必须是void&#xff0c;这也就是不能直接从这个…

【GitHub项目推荐--一个 C++ 实现快速存储的库】【转载】

一个提供可嵌入、持久键值存储以实现快速存储的库。 github地址 https://github.com/facebook/rocksdb 国内镜像 http://www.gitpp.com/ag/rocksdb RocksDB 是一个开源的嵌入式键值存储库&#xff0c;由 Facebook 开发&#xff0c;用于处理大量的数据&#xff0c;特别适合于…

【C++】C++入门 — 指针空值nullptr

C入门 指针空值 指针空值 在良好的C/C编程习惯中&#xff0c;声明一个变量时最好给该变量一个合适的初始值&#xff0c;否则可能会出现 不可预料的错误&#xff0c;比如未初始化的指针。如果一个指针没有合法的指向&#xff0c;我们基本都是按照如下 方式对其进行初始化: voi…

03 - python基础篇

1. 面向对象认识 1.1 面向过程 核心&#xff1a;怎么做 把需要完成的业务逻辑&#xff0c;所有步骤从头到尾逐步实现将某些功能独立的代码封装成函数最后&#xff0c;就是顺序调用不同的函数 注重步骤与过程&#xff0c;不注重职责分工。 1.2 面向对象 核心&#xff1a;谁…

【智慧农业】东胜物联温室监控系统硬件解决方案,自动化控制温室灯光、温湿度等

温室监控系统旨在提高智慧农业的工业生产率和效率。根据最近的一项研究&#xff0c;农业领域的物联网市场预计到2026年将达到约187亿美元。物联网技术包括自主耕作方法&#xff0c;帮助农场生产高质量的商品&#xff0c;并为农场经理提供最佳功能。某上市药企因业务需要&#x…

【Java 数据结构】对象的比较

Java中对象的比较 1. PriorityQueue中插入对象2. 元素的比较2.1 基本类型的比较2.2 对象比较的问题 3. 对象的比较3.1 覆写基类的equals3.2 基于Comparble接口类的比较3.3 基于比较器比较3.4 三种方式对比 4. 集合框架中PriorityQueue的比较方式5. 使用PriorityQueue创建大小堆…

Json序列化和反序列化 笔记

跟着施磊老师学C 下载&#xff1a;GitHub - nlohmann/json: JSON for Modern C 在single_include/nlohmann里头有一个json.hpp&#xff0c;把它放到我们的项目中就可以了 #include "json.hpp" using json nlohmann::json;#include <iostream> #include <…