命令介绍
Hash 族命令用于操作键内的字段-值(field-value)映射结构,适合以"一个 Key = 一个对象"的方式存储用户资料、配置项等结构化数据。其核心命令按功能可分为以下四类:
字段读写与删除
HSET / HMSET:设置一个或多个字段的值。
HGET / HMGET / HGETALL:读取单个字段、批量字段或全部字段-值对。
HDEL:删除指定字段。
HSETNX:仅在字段不存在时设置值。
字段查询与统计
HEXISTS:检查字段是否存在。
HLEN:返回字段数量。
HKEYS / HVALS:分别返回所有字段名或所有字段值。
HSCAN:以游标方式增量迭代大 Hash 中的字段,避免一次性 HGETALL 导致的阻塞。
原子计数
HINCRBY / HINCRBYFLOAT:对数值型字段进行原子递增,适用于用户积分、商品库存等多维计数器场景。
高版本增强命令(Redis 6.2+ / Valkey 8.0+)
HRANDFIELD:随机返回一个或多个字段,适用于抽样与随机推荐场景。
命令支持概览
基础命令:hdel、hexists、hget、hgetall、hincrby、hincrbyfloat、hkeys、hlen、hmget、hmset、hset、hsetnx、hstrlen、hvals、hscan,Redis 2.8标准架构及4.0、5.0、6.2、7.0版本、Valkey 8.0、9.0的标准架构与集群架构均支持。
hrandfield 命令:仅 Redis 6.2、7.0 版本及 Valkey 8.0、9.0 版本支持。
字段级过期命令:hexpire、hpexpire、hexpireat、hpexpireat、hexpiretime、hpexpiretime、httl、hpttl、hpersist、hsetex、hgetex、hgetdel,仅 Valkey 9.0 支持。
跨 Slot 限制:集群架构下,若命令操作涉及分布在多个不同 Slot 上的 Hash 键,则该命令不支持。
命令兼容性矩阵
Hash 族命令在各版本与架构下的支持情况如下表所示(✓ 表示支持,✗ 表示不支持,— 表示该命令不存在跨 Slot 访问场景)。
命令 | Valkey 9.0标准架构 | Valkey 9.0集群架构 | Redis 7.0/Valkey 8.0标准架构 | Redis 7.0/Valkey 8.0集群架构 | Redis 6.2标准架构 | Redis 6.2集群架构 | Redis 5.0标准架构 | Redis 5.0集群架构 | Redis 4.0标准架构 | Redis 4.0集群架构 | Redis 2.8标准架构 | 集群架构跨 Slot 支持 |
hdel | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
hexists | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
hget | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
hgetall | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
hincrby | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
hincrbyfloat | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
hkeys | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
hlen | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
hmget | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
hmset | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
hset | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
hsetnx | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
hstrlen | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | — |
hvals | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
hscan | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
hrandfield | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
hexpire | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
hpexpire | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
hexpireat | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
hpexpireat | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
hexpiretime | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
hpexpiretime | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
httl | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
hpttl | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
hpersist | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
hsetex | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
hgetex | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |
hgetdel | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | ✗ | — |