极致性能的服务器Redis之Hash类型及相关指令介绍

目录

[1. Hash介绍](#1. Hash介绍)

[2. hset](#2. hset)

[3. hget](#3. hget)

[3. hdel](#3. hdel)

[5. hkeys](#5. hkeys)

[6. hvals](#6. hvals)

​编辑

[7. hgetall](#7. hgetall)

[8. hexists](#8. hexists)

[9. hmget](#9. hmget)

[10. hlen](#10. hlen)

[11. hsetnx](#11. hsetnx)

[12. hincrby](#12. hincrby)

[13. hincrbyfloat](#13. hincrbyfloat)


1. Hash介绍

Redis 哈希类型是键值对的集合,字段与值均支持字符串、数字等类型,适合建模用户信息、配置项等对象类数据。其支持单字段 / 多字段的增删改查、字段存在性判断、值自增自减等原子操作,且底层通过压缩列表或哈希表优化存储,空间利用率高、查询效率快,是 Redis 中存储结构化数据的核心类型之一。

在Redis中因为本身就是按照哈希的KV结构来进行存储的,所以当我们想要使用Redis里面的哈希的时候,实际上是哈希的哈希,在后者中,则用field来代替原本的Key位置,防止和前面的哈希名字相同,接下来我会介绍哈希在Redis中的使用。

2. hset

这个指令的话就是用来在Redis中创建一个哈希的键值对。

语法:

sql 复制代码
hset key field value

我们看下面这张图片,在Redis中的key和field的关系就像这样。一个key可以有很多个field,一个field和一个value一一对应。

我们来看下面这张图片,当我们对一个field重新使用hset时,会对它里面的value进行更新。

同时一个key也可以对应多个field。

3. hget

这个的话就是通过key和field来得到对应的value的。

语法:

sql 复制代码
hset key field value

我们看下面这张图片,hget相当于是通过两个关键字找到的v3。

它是不支持一次访问多个value的。在后面会有一些特定的指令来获取多个value的。

3. hdel

这个指令的话就是用来删除value和field的。

语法:

sql 复制代码
hdel key field

我们看下面这张图片,**这个hdel删除的是field和它对应的value,不会把key给删除了的(在key还有其他对应field的时候)。**所以在这张图里面我们去访问对应的f2还是可以成功的。

5. hkeys

这个的话就是用来查找这个key里面所有的field的,它的返回值也是返回这个key对应的全部field。

语法:

sql 复制代码
hkeys key

我们看下面这张图片,通过hkeys就可以查找这个k1里面使用的field了。

在下图中之所以会失败,是因为hkeys *返回空数组是因为 Redis 里*不是通配符用法,hkeys只能跟具体的键名,不能直接用通配符匹配多个哈希键。

6. hvals

这个指令的话和上面那个指令很像,只不过上面那个是返回对应的field,这个指令是返回这个key里面使用的value。

语法:

sql 复制代码
hvals key

我们看下面这张图片,通过hvals就可以拿到k1里面所有的value了。

7. hgetall

这个的话就像是上面两个指令的结合体,它可以直接获得这个key所对应的所有field和value。

语法:

sql 复制代码
hgetall key

我们看下面这张图片,通过这样的方式就可以吧直接得到这个k1里面使用的field和value了。

PS:无论是hvals,hkeys或者hgetall,他们其实在很多时候是不被推荐使用的,因为我们并不知道这个key里面到底有多少个哈希键值对,由于Redis是单线程的数据库,如果很多的话会让Redis卡住的。

8. hexists

这个指令的话就是用来判断某一个value是否存在或者说是判断通过两个关键字是否可以找到值。

语法:

sql 复制代码
hexists key field

我们看下面的图片,如果这个value存在的话就返回1,不存在就返回0。

9. hmget

这个指令的话可以一次获取多个value的值。

语法:

sql 复制代码
hmget key field........

我们看下面这张图片,我们可以输入对应的key和field,然后就可以批量的得到对应的value。

10. hlen

这个的话就是返回这个key所对应的field的个数,如果这个key不存在的话那么就返回0.

语法:

sql 复制代码
hlen key

我们看下面这张图片,这个k1里面有三个哈希键值对,所以我们调用hlen的时候会返回3,而k2不存在,所以在这里会返回0。

11. hsetnx

这个指令的话就是在字段不存在的情况下,设置 hash 中的字段和值。

语法:

sql 复制代码
hsetnx key field value

我们看下面这张图片 ,在k1里面没有f3的时候我们用hsetnx是可以成功的,而有了之后我们再用hsetnx来插入f3是会失败的。

12. hincrby

这个指令的话就是给field对应的那个value的值进行增加或者减少操作。

语法:

sql 复制代码
hincrby key field 要加或减的值

我们看下面这张图片,这个指令的话既可以加数字也可以减数字,只要我们在原本的数字前面加一个负号就好。

13. hincrbyfloat

这个指令的话和上面那个很像,不同的地方就是这个是可以给浮点数进行浮点数的加减的。

注意:这个指令不止可以给浮点数用,他也可以给整数用,同时它的值也可以为整数。

语法:

sql 复制代码
hincrbyfloat key field 要加或减的值

我们看下面这张图片,这个hincrbyfloat即可以给整数加浮点数,也可以给浮点数加整数。

相关推荐
物联网软硬件开发-轨物科技1 分钟前
【轨物洞见】什么是产品碳足迹(PCF)?ISO 14067 计算方法与应用场景深度解读
大数据·网络·人工智能
霸道流氓气质12 分钟前
Prompt 版本控制与 A/B 测试实战:语义版本管理、一致性哈希分流与 Thompson Sampling 的 Java 生产级实现
java·prompt·哈希算法
敲个大西瓜13 分钟前
langchain笔记(一)
redis·笔记·langchain
北龙云海18 分钟前
AI驱动数据库运维变革:北龙云海智能巡检平台实践与展望
运维·数据库·人工智能
GlobalInfo20 分钟前
2026年全球无人机清洗系统市场深度分析:规模、竞争格局与AI自主作业演进趋势
大数据·人工智能·ai·无人机
带金箍的至尊宝21 分钟前
系统架构设计师笔记 05:第2章硬件与软件基础,冯诺依曼结构怎么考
数据库·笔记·系统架构
AI职业加油站27 分钟前
AI 校招现状:大模型应用工程师证书,助力简历能力证明
大数据·运维·人工智能·学习·职场发展
蟕初的梦想1 小时前
Claude Haiku 5.5 效能实测与场景应用指南
数据库·人工智能·大模型
cc5725026531 小时前
2027 秋招求职分析:大数据相关专业,企业服务售前与实施岗位对比
大数据
专注API从业者1 小时前
告别复杂页面解析,OpenClaw 快速搭建电商商品监控与数据分析脚本
大数据·数据库·python·数据挖掘·数据分析