Redis 哈希介绍:HMSET、HGET、HGETALL

Redis 哈希是一种强大的数据结构,允许您在单个键内存储字段值对的集合。它们对于表示对象、配置或任何可以自然分组到字段中的数据非常有用。本课将向您介绍使用 Redis 哈希的基本命令: HMSET 、 HGET 和 HGETALL 。您将学习如何创建、检索和检查哈希数据,为下一课中更复杂的哈希操作奠定基础。

了解 Redis 哈希

Redis 哈希本质上是 Redis 键内的字典或映射。它允许你在单个键下存储多个键值对。这与 Redis 字符串不同,后者每个键只能存储一个值。

将 Redis 哈希想象成一个微型数据库表,其中键是表名,字段是列名,值是特定行每列中的数据。

关键概念

  • 键: 哈希表的主要标识符。这是在 Redis 中引用整个哈希表的方式。
  • 字段: 哈希表中的键。它类似于数据库表中的列名。
  • 值: 与哈希中的特定字段相关的数据。

示例场景:用户配置文件

假设您正在构建一个用户个人资料系统。与其将每个用户属性(姓名、邮箱、年龄)存储为单独的 Redis 键,不如将它们全部存储在一个哈希表中。键可以是 user:123 (其中 123 是用户 ID),字段可以是 name 、 email 和 age 。

HMSET:在哈希中设置多个字段

HMSET 命令用于一次性设置哈希表中的多个字段-值对。这是一种创建或更新包含多个字段的哈希表的有效方法。

句法

HMSET key field1 value1 field2 value2 ...
  • key :哈希的名称。如果哈希不存在,则会创建它。
  • field1 value1 field2 value2 ... :要在哈希中设置的字段值对的列表。

例子

让我们创建一个哈希来存储有关产品的信息:

HMSET product:123 name "Awesome T-Shirt" description "A comfortable and stylish t-shirt" price 25.99 stock 100

在此示例中:

  • product:123 是哈希的密钥。
  • name 、 description 、 price 和 stock 是字段。
  • "Awesome T-Shirt" 、 "A comfortable and stylish t-shirt" 、 25.99 和 100 是相应的值。

重要注意事项

  • HMSET 会覆盖现有字段。如果某个字段在哈希表中已经存在,则其值将被更新为新值。
  • 值以字符串形式存储。即使您提供的是数字,它也会以字符串形式存储。您可能需要在检索值时将其转换回数字,具体取决于应用程序的需求。
  • 字段和值的顺序很重要。请确保按正确的顺序提供它们。

锻炼

  1. 创建一个名为 customer:456 哈希,其中包含以下字段: first_name 、 last_name 、 email 和 phone 。用示例数据填充它。
  2. 使用新的电子邮件地址更新 customer:456 哈希中的 email 字段。

HGET:从哈希中获取单个字段

HGET 命令用于从哈希中检索特定字段的值。

句法

HGET key field
  • key :哈希的名称。
  • field :您要检索的字段的名称。

例子

让我们检索之前创建的产品的名称:

HGET product:123 name

此命令将返回 "Awesome T-Shirt" 。

如果该字段在哈希中不存在, HGET 将返回 nil 。

不存在字段的示例

HGET product:123 color

此命令将返回 nil 因为 color 字段不存在于 product:123 哈希中。

锻炼

  1. 从您在上一个练习中创建的 customer:456 哈希中检索 last_name 。
  2. 尝试检索 customer:456 哈希中不存在的字段(例如 address )。Redis 返回什么?

HGETALL:从哈希中获取所有字段和值

HGETALL 命令用于从哈希中检索所有字段及其对应的值。

句法

HGETALL key
  • key :哈希的名称。

例子

让我们检索有关该产品的所有信息:

HGETALL product:123

此命令将返回字段和值的列表:

1) "name"
2) "Awesome T-Shirt"
3) "description"
4) "A comfortable and stylish t-shirt"
5) "price"
6) "25.99"
7) "stock"
8) "100"

输出是一个字段和值交替出现的数组。通常,您需要在应用程序代码中处理此数组,以创建更易用的数据结构(例如,字典或对象)。

重要注意事项

  • 对于较大的哈希值, HGETALL 可能会比较慢。如果只需要几个字段,使用多个 HGET 命令会更高效。
  • 输出中的字段和值的顺序不能保证与设置它们的顺序相同。

锻炼

  1. 从 customer:456 哈希中检索所有字段和值。
  2. 写下你收到的输出。你将如何在应用程序中处理这些输出以创建类似字典的结构?

实际应用

哈希非常适合存储具有固定属性集的对象。以下是一些示例:

  • 用户会话: 将用户会话数据(用户 ID、登录时间、上次活动)存储在哈希中。
  • 配置设置: 将应用程序配置设置(数据库连接详细信息、API 密钥)存储在哈希中。
  • 产品目录: 将产品信息(名称、描述、价格、库存)存储在哈希中,如上面的示例所示。
  • 社交媒体帖子: 将帖子详细信息(作者、内容、时间戳、喜欢)存储在哈希中。
Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐