哈希(Hash)常见命令详解
在 Redis 中,哈希表(Hash)是一种非常灵活且高效的数据结构,它允许我们将多个键值对(field-value pairs)存储在一个单一的 Redis 键(key)中。以下是 Redis 中哈希表相关命令的详细解释和用法:
添加和更新数据
-
HSET key field value
- 功能:为哈希表
key
添加一个键值对field-value
。如果该哈希表不存在,Redis 会自动创建它。如果field
已经存在,则会更新其对应的value
。 - 示例:
HSET user:1000 name "Alice"
- 功能:为哈希表
-
HMSET key field value [field value …](注意:在 Redis 4.0.0 及以后的版本中,推荐使用
HSET
的多字段形式HSET key field1 value1 field2 value2 ...
来替代HMSET
)- 功能:批量添加多个键值对到哈希表
key
中。如果某些field
已经存在,则更新其对应的value
。 - 示例:
HMSET user:1000 name "Alice" age 25
(或HSET user:1000 name "Alice" age 25
)
- 功能:批量添加多个键值对到哈希表
-
HSETNX key field value
- 功能:仅当
field
不存在于哈希表key
中时,才添加field-value
键值对。如果field
已存在,则不做任何操作。 - 示例:
HSETNX user:1000 email "alice@example.com"
(如果email
字段已存在,则不会更新)
- 功能:仅当
查询数据
-
HGET key field
- 功能:获取哈希表
key
中field
对应的value
。如果field
不存在,则返回nil
。 - 示例:
HGET user:1000 name
- 功能:获取哈希表
-
HMGET key field [field …]
- 功能:批量获取哈希表
key
中多个field
对应的value
。如果某些field
不存在,则返回nil
对应的结果。 - 示例:
HMGET user:1000 name age
- 功能:批量获取哈希表
-
HGETALL key
- 功能:返回哈希表
key
中的所有键值对。结果是一个包含所有字段和值的列表。 - 示例:
HGETALL user:1000
- 功能:返回哈希表
删除数据
- HDEL key field [field …]
- 功能:删除哈希表
key
中的一个或多个field
及其对应的value
。返回被删除字段的数量。 - 示例:
HDEL user:1000 age
- 功能:删除哈希表
检查和获取字段信息
-
HEXISTS key field
- 功能:判断哈希表
key
中是否存在field
。如果存在,返回1
;否则,返回0
。 - 示例:
HEXISTS user:1000 name
- 功能:判断哈希表
-
HKEYS key
- 功能:返回哈希表
key
中的所有字段(field
)。 - 示例:
HKEYS user:1000
- 功能:返回哈希表
-
HVALS key
- 功能:返回哈希表
key
中的所有值(value
)。 - 示例:
HVALS user:1000
- 功能:返回哈希表
-
HLEN key
- 功能:返回哈希表
key
中的字段数量。 - 示例:
HLEN user:1000
- 功能:返回哈希表
数值操作
- HINCRBY key field increment
- 功能:将哈希表
key
中field
对应的值增加increment
。field
的值必须为整数。如果field
不存在,则初始化为0
后再增加。 - 示例:
HINCRBY user:1000 login_count 1
- 功能:将哈希表
这些命令提供了对哈希表数据结构的丰富操作,使得 Redis 能够高效地处理复杂的键值对数据。通过合理使用这些命令,可以灵活地管理和查询存储在 Redis 中的哈希表数据。