Hash 类型概览
Redis 哈希(Hash)是键值对的集合,字段与值均支持字符串或数字。它非常适合建模用户信息、配置项等对象类数据。底层通过压缩列表或哈希表优化存储,空间利用率高且查询效率快,是 Redis 中处理结构化数据的核心类型之一。在 Redis 内部,它本质上是嵌套的 KV 结构,外层 Key 对应一个 Hash 对象,内层 Field 替代了原本的 Key 位置,避免冲突。
核心指令详解
1. hset:创建与更新
用于在 Hash 中设置字段值。如果字段已存在,则覆盖旧值;若不存在,则新建。
hset key field value
执行成功后,若为新增字段返回 1,若为更新已有字段返回 0。一个 Key 下可包含多个 Field,每个 Field 对应唯一的 Value。
2. hget:获取单字段
通过 Key 和 Field 获取对应的 Value。该命令仅支持单次访问单个字段,不支持批量获取。
hget key field
若指定的 Field 不存在,返回 nil。
3. hdel:删除字段
删除指定 Key 下的某个 Field 及其对应的 Value。
hdel key field
注意:此操作仅删除字段,不会删除 Key 本身(除非该 Key 下仅剩这一个字段)。若 Key 下还有其他字段,访问该 Key 依然有效。
4. hkeys / hvals / hgetall:遍历与全量获取
- hkeys:返回 Key 下所有的 Field 名称。
- hvals:返回 Key 下所有的 Value。
- hgetall:同时返回所有 Field 和 Value 的成对结果。
hkeys key
hvals key
hgetall key
性能提示:虽然这些命令方便,但在生产环境中需谨慎使用。由于 Redis 是单线程模型,如果 Hash 中的数据量过大,全量获取会导致主线程阻塞,影响其他请求。建议先通过 hlen 确认数据规模。
5. hexists:字段存在性检查
判断某个 Field 是否存在于指定的 Key 中。
hexists key field
存在返回 1,不存在返回 0。常用于逻辑判断场景。
6. hmget:批量获取
一次性获取多个字段的值,效率高于多次调用 hget。
hmget key field [field ...]
返回结果顺序与输入字段的顺序一致。
7. hlen:统计字段数
返回 Key 下字段的数量。若 Key 不存在,返回 0。
hlen key
8. hsetnx:条件设置
仅在字段不存在时设置值。若字段已存在,则不执行任何操作并返回 0。
hsetnx key field value
适用于防止重复写入的场景。
9. hincrby / hincrbyfloat:数值运算
支持对字段值进行原子性的加减操作。
- hincrby:整数加减。
- :浮点数加减(也支持整数参与运算)。


