Redis 7.x 系列【8】数据类型之哈希(Hash)
有道无术,术尚可求,有术无道,止于术。
本系列Redis 版本 7.2.5
源码地址:https://gitee.com/pearl-organization/study-redis-demo
文章目录
- 1. 概述
- 2. 常用命令
- 2.1 HSET
- 2.2 HGET
- 2.3 HDEL
- 2.4 HEXISTS
- 2.5 HGETALL
- 2.6 HKEYS
- 2.7 HLEN
- 2.7 HVALS
- 3. 应用场景
1. 概述
Redis Hash 是一个键值对集合,是一个 string 类型的 field(字段) 和 value(值) 的映射表,类似 Java 里面中的 Map<String,Object>,特别适合用于存储对象。

2. 常用命令
Hash 相关的所有命令:
| 命名 | 描述 |
|---|---|
| HDEL | 用于删除哈希表中一个或多个字段 |
| HEXISTS | 用于判断哈希表中字段是否存在 |
| HEXPIRE | 设置一个或多个字段的过期时间,秒为单位 |
| HEXPIREAT | HEXPIREAT具有与HEXPIRE相同的效果和语义,但它没有指定TTL(生存时间)的秒数,而是使用Unix时间戳(以秒为单位) |
| HEXPIRETIME | 给定key字段将在该时间点过期,返回自Unix时间戳(以秒为单位) |
| HGET | 获取存储在哈希表中指定字段的值 |
| HGETALL | 获取在哈希表中指定 key 的所有字段和值 |
| HINCRBY | 为存储在 key 中的哈希表指定字段做整数增量运算 |
| HINCRBYFLOAT | 为存储在 key 中的哈希表指定字段值加上指定浮点数增量值 |
| HKEYS | 获取存储在 key 中的哈希表的所有字段 |
| HLEN | 获取存储在 key 中的哈希表的字段数量 |
| HMGET | 用于获取存储在 key 中的哈希表字段的值 |
| HMSET | 用于设置存储在 key 中的哈希表字段的值 |
| HPERSIST | 删除 key字段上现有的过期时间 |
| HPEXPIRE | 与HEXPIRE类似,以毫秒为单位 |
| HPEXPIREAT | 与HEXPIRE类似,使用Unix时间戳 |
| HPEXPIRETIME | 与HEXPIRETIME具有相同的语义,使用Unix时间戳(以毫秒为单位) |
| HPTTL | 与HTTL一样,返回具有过期设置的字段的剩余TTL(生存时间),但以毫秒而不是秒为单位 |
| HRANDFIELD | 随机获取字段和值 |
| HSCAN | 返回的每个元素都是一个元组,每一个元组元素由一个字段和值组成 |
| HSET | 为哈希表中的字段赋值 |
| HSETNX | 用于为哈希表中不存在的的字段赋值 |
| HSTRLEN | 返回字段关联的值的字符串长度,如果键或字段不存在,则返回0 |
| HTTL | 返回具有过期设置的字段的剩余TTL(生存时间),秒为单位 |
| HVALS | 用于获取哈希表中的所有值 |
2.1 HSET
HSET 命令用于为存储在 key 中的哈希表的 field 字段赋值 value 。只有被修改返回0 ,有增加返回增加的 field 个数。
注意事项:
- 如果哈希表不存在,一个新的哈希表被创建并进行
HSET操作。 - 如果字段(
field)已经存在于哈希表中,旧值将被覆盖。 - 从
Redis 4.0起,HSET可以一次设置一个或多个field/value对。
基本语法:
HSET key field value [field value ...]
示例:
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field1 "Hello" field2 "world" field3 "!"
(integer) 2
redis> HGET myhash field1
"Hello"
2.2 HGET
HGET 命令用于返回哈希表中指定字段 field 的值,如果给定的字段或 key 不存在时,返回 nil 。
示例:
redis> HSET myhash field1 "foo"
(integer) 1
# 字段存在
redis> HGET myhash field1
"foo"
# 字段不存在
redis> HGET myhash field2
(nil)
2.3 HDEL
HDEL 命令用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。 如果 key 不存在,会被当作空哈希表处理并返回 0。
基本语法:
HDEL key field [field ...]
示例:
redis> HSET myhash field1 "foo"
(integer) 1
redis> HDEL myhash field1
(integer) 1
redis> HDEL myhash field2
(integer) 0
2.4 HEXISTS
HEXISTS 命令用于查看哈希表的指定字段 field 是否存在。
返回值:
1:哈希表含有给定字段field。0:哈希表不含有给定字段,或key不存在。
基本语法:
HEXISTS key field
示例:
redis> HSET myhash field1 "foo"
(integer) 1
redis> HEXISTS myhash field1
(integer) 1
redis> HEXISTS myhash field2
(integer) 0
2.5 HGETALL
HGETALL 命令用于返回存储在 key 中的哈希表中所有的字段和值。在返回值里,紧跟每个字段之后是字段的值,所以返回值的长度是哈希表大小的两倍。
基本语法:
HGETALL key
示例:
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HGETALL myhash
1) "field1"
2) "Hello"
3) "field2"
4) "World"
2.6 HKEYS
HKEYS 返回存储在 key 中哈希表的所有字段。在返回值里,紧跟每个字段之后是字段的值,所以返回值的长度是哈希表大小的两倍。
基本语法:
HKEYS key
示例:
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HKEYS myhash
1) "field1"
2) "field2"
2.7 HLEN
HLEN 命令用于获取哈希表中字段的数量,当 key 不存在时,返回 0 。
基本语法:
HLEN key
示例:
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HLEN myhash
(integer) 2
2.7 HVALS
HVALS 命令返回哈希表所有字段值, 当 key 不存在时,返回空表。
基本语法:
HVALS key
示例:
redis> HSET myhash field1 "Hello"
(integer) 1
redis> HSET myhash field2 "World"
(integer) 1
redis> HVALS myhash
1) "Hello"
2) "World"
3. 应用场景
Hash 数据结构查找快、结构灵活,非常适用于存储一些结构化数据,作为数据库缓存提高读写能力。比如登录用户信息、系统参数信息、配置信息等,同时也支持计数器相关功能。
例如,系统的一些配置参数,都是键值对,适合使用Hash 存储:

例如,存入两个登录页面需要查询的配置参数:
localhost:0>HMSET sys:params login_enabled_dingding true login_enabled_wx false
"OK"
可视化界面显示如下:

可以快速查询配置参数:
localhost:0>HGET sys:params login_enabled_dingding
"true"
相关文章:
Redis 7.x 系列【8】数据类型之哈希(Hash)
有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 HSET2.2 HGET2.3 HDEL2.4 HEXISTS2.5 HGETALL2.6 HKEYS2.7 HLE…...
jetson 安装 Rustdesk失败
报错: rustdesk depends on gstreamer1.0-pipewire; however: Package gstreamer1.0-pipewire is not installed. 原因: 对于rustdesk,其1.2.3 版需要gstreamer1.0-pipewire软件包,但是此软件包仅适用于 Ubuntu 22.04、22.10、23.04 和 2…...
Vue原生写全选反选框
效果 场景:Vue全选框在头部,子框在v-for循环内部。 实现:点击全选框,所有子项选中,再次点击取消;子项全选中,全选框自动勾选,子项并未全选,全选框不勾选;已选…...
typescript学习回顾(三)
今天继续来分享ts的相关概念,枚举,ts模块化,接口和类型兼容性 ts的扩展类型:类型别名,枚举,接口和类 枚举 基础概念 枚举通常用于约束某个变量的取值范围。当然字面量和联合类型配合使用,也可…...
算尽天下财,铸就大明梦 —— 大明钱算子夏元吉的传奇一生
仕途生涯开始:洪武二十三年(1390年),夏元吉因精通《诗经》,由湖广乡荐参加礼部组织的会试,虽未中举,但他并未气馁,反而更加努力地学习。洪武二十四年(1391年)…...
openCV3.0 C++ 学习笔记补充(自用 代码+注释)---持续更新 二(51-)
环境:OpenCV3.2.0 VS2015 51、Mean-Shift算法分割图像 cv::pyrMeanShiftFiltering() 参考链接:【从零学习OpenCV 4】分割图像——Mean-Shift分割算法 Mean-Shift算法又被称为均值漂移法,是一种基于颜色空间分布(彩色图像的像素值)的图像分割…...
读AI新生:破解人机共存密码笔记13有益机器
1. 标准模型 1.1. 我们能控制一个从外太空来的超级智能实体的概率几乎为零 1.2. 随着根据标准模型设计的机器变得更加智能,以及它们的行动范围遍及全球,关闭机器这种方法越来越不可行 1.2.1. 机器将会追求它们自己的目标,无论目标错得多么…...
Spring Boot中使用Swagger生成API文档
Spring Boot中使用Swagger生成API文档 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!在现代的软件开发中,良好的API文档是团队协作和开发效率不可或…...
解决 macOS 中“无法验证开发者”的问题
解决 macOS 中“无法验证开发者”的问题 在使用 macOS 系统时,你可能会遇到一个常见的问题:当你尝试安装或打开某些应用程序时,系统会弹出一个警告,提示“无法验证开发者”。这通常发生在从非官方 App Store 下载的应用程序上。本…...
Emp.dll文件丢失?理解Emp.dll重要性与处理常见问题
在繁多的动态链接库(DLL)文件中,emp.dll 可能不是最广为人知的,但在特定软件或环境中,它扮演着关键角色。本文旨在深入探讨 emp.dll 的功能、重要性以及面对常见问题时的解决策略。 什么是 emp.dll? Emp.d…...
知识平台管理系统设计
知识平台管理系统设计是一个综合性的过程,旨在为企业或组织提供一个高效、便捷的知识管理解决方案。以下是知识平台管理系统设计的详细阐述: 一、设计目标和原则 1、设计目标:设计一款功能强大、易于使用、支持多种知识形式分类和搜索的知识管…...
Python 中字符串修饰符
1. 原始字符串 (Raw String) - r 或 R 使用 r 或 R 前缀,可以告诉 Python 字符串中的所有反斜杠都是普通字符,而不是转义字符。这在处理文件路径、正则表达式等情况下非常有用。 path rC:\new_folder\test.txt # 原始字符串2. 格式化字符串 (Formatt…...
红队内网攻防渗透:内网渗透之内网对抗:横向移动篇Kerberos委派安全RBCD资源Operators组成员HTLMRelay结合
红队内网攻防渗透 1. 内网横向移动1.1 横向移动-资源约束委派-利用域用户主机加入1.1.1 利用思路1.1.2 利用条件1.1.3 利用过程1.2 横向移动-资源约束委派-Acount Operators组1.2.1 利用思路:1.2.2 利用条件:1.2.3 利用过程:1.3 横向移动-资源约束委派-CVE结合HTLMRelay1.3.…...
Manjaro Linux系统简介和archlinux哲学
## Manjaro Linux系统简介 Manjaro Linux是一个基于Arch Linux的操作系统,以其用户友好性和滚动更新机制而受到广泛欢迎。它为用户提供了一个易于安装和使用的平台,同时保持了Linux系统的高度定制性和最新的软件特性。 ### Manjaro Linux与Arch Linux的…...
【Windows 常用工具系列 17 -- windows bat 脚本多参数处理】
请阅读【嵌入式开发学习必备专栏】 文章目录 bat 脚本命令行参数使用示例多参数处理使用示例遍历所有参数 bat 脚本命令行参数 在Windows批处理(.bat)脚本中接收命令行参数是一个常见的需求,这样的脚本能够根据提供的参数执行不同的操作。命…...
《Windows API每日一练》6.3 非客户区鼠标消息
上一节我们讨论客户区的鼠标消息,本节我们讨论非客户区鼠标消息。如果鼠标位于窗口内部除客户区外的其他区域,Windows就会向窗口过程发送一个“非客户区”鼠标消息。窗口的非客户区包括标题栏、菜单和窗口滚动条。 本节必须掌握的知识点: 非…...
Http客户端-Feign 学习笔记
作者介绍:计算机专业研究生,现企业打工人,从事Java全栈开发 主要内容:技术学习笔记、Java实战项目、项目问题解决记录、AI、简历模板、简历指导、技术交流、论文交流(SCI论文两篇) 上点关注下点赞 生活越过…...
【Linux】进程信号_2
文章目录 八、进程信号1. 信号 未完待续 八、进程信号 1. 信号 除了可以使用 kill 命令和键盘来生成信号,我们也可以使用系统调用来生成信号。 kill函数可以对指定进程发送指定信号。 使用方法: int main(int argc, char *argv[]) {if (argc ! 3) {c…...
关于五度圈
五度圈简介 五度圈(Circle of Fifths)是一个展示各个调之间关系的图表。顺时针方向,每个调比前一个调高五度。逆时针方向,每个调比前一个调低五度。五度圈不仅展示了调性之间的关系,还能帮助你理解和记忆音符之间的关…...
电脑突然提示dll文件丢失,怎么选择正确的恢复方法?
电脑突然提示dll文件丢失?其实当你的电脑使用久了,出现这种dll文件丢失是非常的正常的,毕竟你总会有不恰当的操作吧?这些操作都是会导致dll文件丢失的。丢失了,我们直接进行相关的修复就好了,还是比较简单的…...
Java 数字校验实战:从工具类到正则,性能与场景的深度抉择
1. 数字校验的常见场景与挑战 在Java开发中,数字校验是个看似简单却暗藏玄机的基础操作。我见过太多项目因为数字校验不严谨导致的数据异常,比如用户输入"12a3"被误认为金额,或者接口接收"-1.2.3"这样的非法浮点数。这些…...
员工管理(新增员工)、事务管理和文件上传(阿里云OSS)
员工管理(新增员工) 思路就是就是新增的员工基本信息和批量保存员工的工作经历信息,也就是后端对应了两条sql语句, 1.保存员工基本信息 Emp实体类中新添一个字段用于保存员工工作经历 //封装工作经历 private List<EmpExpr> exprList; (1)Cont…...
2026最权威的AI辅助写作方案推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在当下的学术环境里头,知网的AI内容识别机制已然全面实现落地,针对由…...
学习如何用CC-Switch + Claude Code 接入 DeepSeek-V4-Pro
1.概述 1.1.关键词 Claude Code:Anthropic 出品的 AI 编程命令行工具。在终端里让 AI 帮你写代码、改 Bug、分析项目。 CC-Switch:开源的图形化配置管理工具。一键切换 Claude Code 背后使用的模型,不用手动改配置文件。 1.2.目的 使用C…...
5分钟快速上手Sonar CNES Report:让代码质量报告变得简单高效
5分钟快速上手Sonar CNES Report:让代码质量报告变得简单高效 【免费下载链接】sonar-cnes-report Generates analysis reports from SonarQube web API. 项目地址: https://gitcode.com/gh_mirrors/so/sonar-cnes-report 你是否经历过这样的场景?…...
PHP WebSocket隧道实现SOCKS5代理:在受限主机环境下的网络出口方案
1. 项目概述:一个在特定托管环境下的轻量级SOCKS5代理方案最近在折腾一些需要稳定网络环境的小项目,尤其是在一些资源受限的海外托管平台上,直接访问某些服务或进行数据抓取时,经常会遇到IP限制或连接不稳定的问题。这时候&#x…...
Understat终极指南:免费获取足球数据的Python异步神器
Understat终极指南:免费获取足球数据的Python异步神器 【免费下载链接】understat An asynchronous Python package for https://understat.com/. 项目地址: https://gitcode.com/gh_mirrors/un/understat 想要快速获取专业足球数据?厌倦了手动爬…...
Windows上快速安装APK的终极指南:APK Installer完整使用教程
Windows上快速安装APK的终极指南:APK Installer完整使用教程 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经需要在Windows电脑上运行Android应用…...
Pearcleaner:彻底清理Mac应用的终极免费开源解决方案
Pearcleaner:彻底清理Mac应用的终极免费开源解决方案 【免费下载链接】Pearcleaner A free, source-available and fair-code licensed mac app cleaner 项目地址: https://gitcode.com/gh_mirrors/pe/Pearcleaner 在Mac系统中卸载应用程序后,你是…...
高项通关秘籍:十大管理ITTO核心逻辑与实战速记
1. 十大管理ITTO的本质与学习误区 第一次接触高项考试的朋友,看到十大管理47个过程域的ITTO(输入、工具与技术、输出)时,往往会被密密麻麻的表格吓到。我当年备考时,整整三天都在和这些缩写词较劲,直到发现…...
