Skip to content

Redis 哈希(Hash)相关命令

设置哈希表中一个或多个字段的值

  • 语法HSET key field value [field value ...]
Terminal window
HSET user:1000 name "Alice" age 30 # 设置 user:1000 的 name 和 age 字段

获取哈希表中指定字段的值

  • 语法HGET key field
Terminal window
HGET user:1000 name # 返回 "Alice"

获取哈希表中所有字段和值

  • 语法HGETALL key
Terminal window
HGETALL user:1000 # 返回 name "Alice" age "30"

删除哈希表中一个或多个字段

  • 语法HDEL key field [field ...]
Terminal window
HDEL user:1000 age # 删除 age 字段

检查哈希表中是否存在某个字段

  • 语法HEXISTS key field
Terminal window
HEXISTS user:1000 name # 返回 1(存在)

替代方案:直接使用 HSET(Redis 4.0+)。

获取哈希表中多个字段的值

  • 语法HMGET key field [field ...]
Terminal window
HMGET user:1000 name age # 返回 ["Alice", "30"]

对哈希表中数值字段进行整数增减

  • 语法HINCRBY key field increment
Terminal window
HINCRBY user:1000 age 1 # 将 age 增加到 31

对哈希表中数值字段进行浮点数增减

  • 语法HINCRBYFLOAT key field increment
Terminal window
HINCRBYFLOAT product:100 price 0.5 # 价格增加 0.5

获取哈希表中字段数量

  • 语法HLEN key
Terminal window
HLEN user:1000 # 返回 2(name 和 age)

获取哈希表中所有字段名

  • 语法HKEYS key
Terminal window
HKEYS user:1000 # 返回 ["name", "age"]

获取哈希表中所有字段值

  • 语法HVALS key
Terminal window
HVALS user:1000 # 返回 ["Alice", "30"]

获取哈希表中字段值的字符串长度

  • 语法HSTRLEN key field
Terminal window
HSTRLEN user:1000 name # 返回 5("Alice" 的长度)

增量迭代哈希表中的字段(避免阻塞)

  • 语法HSCAN key cursor [MATCH pattern] [COUNT count]
Terminal window
HSCAN user:1000 0 MATCH "n*" # 查找以 "n" 开头的字段
  1. 内存优化

小哈希(字段少且值小)使用 ziplist 编码,内存高效。

大哈希自动转为 hashtable 编码,但内存占用增加。

  1. 性能警告

HGETALLHKEYSHVALS 在哈希较大时会返回大量数据,可能阻塞服务。

  1. 原子性

所有哈希命令是原子操作,适合高并发场景。