Skip to content

Redis - 哈希

Redis 哈希 (Hashes) 是一种将字符串字段映射到字符串值的数据类型。它们是表示对象的完美数据结构,例如用户配置文件、产品或任何具有多个属性的实体。单个哈希可以存储超过 40 亿个字段-值对。

与其将对象的每个属性存储为单独的顶级键(例如,user:1001:name、user:1001:email),不如将它们分组到一个哈希中。这样内存效率更高,逻辑上组织更清晰。

我们将使用现代的 HSET 命令,它可以一次设置多个字段。键 user:1001 代表我们的对象,随后的对是它的字段和值。

127.0.0.1:6379> HSET user:1001 name "Jane Doe" email "jane.doe@example.com" plan "premium" visits 150
(integer) 4
127.0.0.1:6379> HGETALL user:1001
1) "name"
2) "Jane Doe"
3) "email"
4) "jane.doe@example.com"
5) "plan"
6) "premium"
7) "visits"
8) "150"

注意:HMSET 在旧版本的 Redis 中使用,但现在已弃用,推荐使用带有多个字段/值参数的 HSET 命令。

下面是处理哈希的关键命令表。

命令描述
HSET key field value [field value …]在哈希中设置一个或多个字段-值对。如果哈希不存在则创建它。
HGET key field从哈希中获取特定字段的值。
HMGET key field [field …]从哈希中获取多个指定字段的值。
HGETALL key获取哈希中的所有字段及其值。对于非常大的哈希,请谨慎使用。
HDEL key field [field …]从哈希中删除一个或多个字段。
HKEYS key获取哈希中的所有字段名(键)。
HVALS key获取哈希中的所有值。
HLEN key获取哈希中字段的数量。
HEXISTS key field判断哈希中是否存在某个字段。如果存在则返回 1,否则返回 0。
HINCRBY key field increment将哈希字段的整数值增加给定数量。在我们的示例中,我们可以运行 HINCRBY user:1001 visits 1。
HINCRBYFLOAT key field increment将哈希字段的浮点值增加给定数量。
HSETNX key field value设置字段的值,仅当字段不存在时才设置。
HMSET key field value [field value …]自 Redis 4.0.0 起已弃用。请使用 HSET 代替。