跳到主要内容
极客日志极客日志
首页博客AI提示词GitHub精选代理工具
搜索
|注册
博客列表
编程语言java算法

Redis Hash 类型及相关指令详解

Redis Hash 类型是键值对集合,适合存储对象数据,支持原子操作及底层优化。常用命令涵盖基础增删改查如 hset/hget/hdel,以及批量查询 hmget、状态检查 hexists 和长度统计 hlen 等。需注意 hvals/hkeys/hgetall 在大数据量下可能影响性能。此外还有条件设置 hsetnx 及数值增减 hincrby/hincrbyfloat 等高级指令。

机器人发布于 2026/3/23更新于 2026/5/97 浏览
Redis Hash 类型及相关指令详解

1. Hash 介绍

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

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

2. hset

该指令用于在 Redis 中创建一个哈希的键值对。

语法:

hset key field value

一个 key 可以有很多个 field,一个 field 和一个 value 一一对应。

文章配图

当对一个 field 重新使用 hset 时,会对它里面的 value 进行更新。同时一个 key 也可以对应多个 field。

文章配图

3. hget

该指令通过 key 和 field 来获取对应的 value。

语法:

hget key field

hget 相当于通过两个关键字找到对应的 value。它不支持一次访问多个 value,后续会有特定指令获取多个 value。

文章配图

4. hdel

该指令用于删除 value 和 field。

语法:

hdel key field

hdel 删除的是 field 和它对应的 value,不会把 key 给删除(在 key 还有其他对应 field 的时候)。因此删除后访问其他 field 依然成功。

文章配图

5. hkeys

该指令用于查找这个 key 里面所有的 field,返回值也是该 key 对应的全部 field。

语法:

hkeys key

通过 hkeys 可以查找指定 key 内使用的 field。

文章配图

注意:hkeys * 返回空数组是因为 Redis 里 * 不是通配符用法,hkeys 只能跟具体的键名,不能直接用通配符匹配多个哈希键。

文章配图

6. hvals

该指令返回这个 key 里面所有的 value。

语法:

hvals key

通过 hvals 可以拿到 key 里面所有的 value。

文章配图

7. hgetall

该指令可以直接获得这个 key 所对应的所有 field 和 value。

语法:

hgetall key

通过这种方式可以直接得到 key 里面使用的 field 和 value。

文章配图

**注意:**无论是 hvals、hkeys 还是 hgetall,它们在很多情况下不被推荐使用。因为我们并不知道这个 key 里面到底有多少个哈希键值对,由于 Redis 是单线程数据库,如果数量很多会让 Redis 卡住。

8. hexists

该指令用来判断某一个 field 是否存在,或者说是判断通过两个关键字是否可以找到值。

语法:

hexists key field

如果该 field 存在的话就返回 1,不存在就返回 0。

文章配图

9. hmget

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

语法:

hmget key field...

输入对应的 key 和 field,就可以批量得到对应的 value。

文章配图

10. hlen

该指令返回这个 key 所对应的 field 的个数,如果这个 key 不存在的话则返回 0。

语法:

hlen key

调用 hlen 时会返回 field 的数量;若 key 不存在,则返回 0。

文章配图

11. hsetnx

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

语法:

hsetnx key field value

在 field 不存在时用 hsetnx 可以成功,而有了之后再用 hsetnx 来插入会失败。

文章配图

12. hincrby

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

语法:

hincrby key field 要加或减的值

该指令既可以加数字也可以减数字,只要在原本的数字前面加一个负号即可。

文章配图

13. hincrbyfloat

该指令可以给浮点数进行浮点数的加减。

注意:该指令不仅支持浮点数,也支持整数,同时它的值也可以为整数。

语法:

hincrbyfloat key field 要加或减的值

hincrbyfloat 既可以给整数加浮点数,也可以给浮点数加整数。

文章配图

目录

  1. 1. Hash 介绍
  2. 2. hset
  3. 3. hget
  4. 4. hdel
  5. 5. hkeys
  6. 6. hvals
  7. 7. hgetall
  8. 8. hexists
  9. 9. hmget
  10. 10. hlen
  11. 11. hsetnx
  12. 12. hincrby
  13. 13. hincrbyfloat
  • 💰 8折买阿里云服务器限时8折了解详情
  • GPT-5.5 超高智商模型1元抵1刀ChatGPT中转购买
  • 代充Chatgpt Plus/pro 帐号了解详情
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • SkyWalking 集成 Spring Cloud Alibaba 全链路追踪实战
  • synchronized 底层原理详解:字节码、对象头与锁升级
  • Kafka 核心架构解析:Topic 与 Partition 映射逻辑详解
  • Qt QWebChannel 前后端通信原理与 C++ JS 互操作
  • 基于 Vue3 的大文件分片加密上传与断点续传方案
  • Java 后端架构演进:从单机到微服务的技术选型方案
  • IntelliJ IDEA 切换 Git 用户配置方法
  • VSCode 中 GitHub Copilot 安装与实战指南
  • Tomcat 安装、配置及 IDEA/Eclipse 集成实战指南
  • Java 二分查找算法经典题目实战
  • 若依低代码框架全面分析与选型指南
  • 什么是 Java 中的原子性、可见性和有序性?
  • 分布式文件系统 HDFS:编程实践与 Java API 详解
  • RocketMQ 顺序消息实战:全局与分区顺序详解
  • 基于 Java 和 Leaflet 的湖南省道路长度 WebGIS 系统构建
  • 基于 Spring Boot 的农家乐运营管理系统设计与实现
  • 自然语言处理在医疗领域的应用与实战
  • 后端语言性能排行:哪种语言最快及其原因分析
  • 分布式文件系统 HDFS 存储原理
  • Kafka 消息存储配置:过期时间与主题存活时间设置

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online