如何在Redis中管理Hashes
系列教程导航
本教程属于 Redis 管理系列的一部分,您可以参考以下相关指南:
- 如何在 Ubuntu 18.04 上安装和保护 Redis
- 如何连接到 Redis 数据库
- 如何管理 Redis 数据库和 Keys
- 如何在 Redis 中管理副本和客户端
- 如何在 Redis 中管理字符串
- 如何在 Redis 中管理 List
- 如何在 Redis 中管理 Hashes
- 如何在 Redis 中管理 Sets
- 如何在 Redis 中管理 Sorted Sets
- 如何在 Redis 中运行事务
- 如何使 Redis 中的 Key 失效
- 如何解决 Redis 中的故障
- 如何从命令行更改 Redis 的配置
- Redis 数据类型简介
介绍
Redis 是一个开源的内存中键值数据存储系统。Redis Hashes(哈希)是一种数据类型,表示字符串字段(field)和字符串值(value)之间的映射。Hashes 可以容纳许多字段 - 值对,并且设计为不占用太多空间,因此非常适合表示数据对象。例如,一个 Hash 可以代表一个客户,包含诸如 name、address、email 或 customer_id 等字段。
本教程将介绍如何在 Redis 中管理 Hashes,涵盖从创建 Hashes 到检索和删除其中保存的数据的全过程。
如何使用本指南
本指南以备有完整示例的备忘单形式编写。我们鼓励您跳至与您要完成的任务相关的任何部分。
本指南中显示的命令已在运行 Redis 版本 4.0.9 的 Ubuntu 18.04 服务器上进行了测试。要设置类似的环境,您可以按照指南 如何在 Ubuntu 18.04 上安装和保护 Redis 的 步骤 1 进行操作。我们将通过使用 Redis 命令行界面(redis-cli)运行它们来演示这些命令的行为。
请注意,如果您使用其他 Redis 界面(例如 Redli),则某些命令的确切输出可能会有所不同。
另外,您可以提供一个托管的 Redis 数据库实例来测试这些命令。但是请注意,根据数据库提供者所允许的控制级别,本指南中的某些命令可能无法按所述方式工作。要配置 DigitalOcean 托管数据库,请遵循我们的 托管数据库产品文档。然后,您必须 安装 Redli 或 设置 TLS 隧道 才能通过 TLS 连接到托管数据库。
创建 Hashes
要创建 Hashes,请运行 hset 命令。此命令接受 Hashes 键的名称、字段字符串和相应的值字符串作为参数:
hset poet:Verlaine nationality French注意: 在此示例及以下示例中,poet:Verlaine 是 Hashes 键。点、破折号和冒号通常用于使多字键和字段更具可读性。确保您的密钥遵循一致且易于阅读的格式很有帮助。hset 返回 (integer) 1 表示指定的字段是一个新字段且值设置正确:
1但是,如果您未能包含 Hashes 键的名称、字段或值,hset 将返回错误。
另外,请注意,如果 Hash 值已经存在,hset 将覆盖其内容:
hset poet:Verlaine nationality Francais如果该字段已经存在并且其值已成功更新,hset 将返回 (integer) 0:
0您还可以使用 hsetnx 将字段添加到 Hashes,但是只有在字段不存在时才起作用。如果指定的字段已经存在,hsetnx 将不会有任何效果,并将返回 (integer) 0:
hsetnx poet:Verlaine nationality French0要将多个字段/值对设置为给定的集合,请使用 hmset 命令,后跟相应的字段/值字符串:
hmset poet:Verlaine born 1844 died 1896 genre Decadenthmset 成功就会返回 OK。
从 Hashes 中检索信息
您可以使用 hexists 命令确定给定 Hashes 的字段是否存在:
hexists poet:Verlaine nationalityhexists 如果该字段确实存在则返回 (integer) 1,如果不存在则返回 (integer) 0。
要返回一个字段的值,请运行 hget 命令,然后依次按 Hashes 键和要检索其值的字段:
hget poet:Verlaine nationality"Francais"hmget 使用相同的语法,但可以返回多个字段的值:
hmget poet:Verlaine born died1) "1844"
2) "1896"如果您传递给 hget 或 hmget 不存在的 Hashes,这两个命令将返回 (nil):
hmget poet:Dickinson born died1) (nil)
2) (nil)要获取特定 Hashes 中包含的所有字段的列表,请运行 hkeys 命令:
hkeys poet:Verlaine1) "nationality"
2) "born"
3) "died"
4) "genre"相反,运行 hvals 以检索哈希中包含的值的列表:
hvals poet:Verlaine1) "French"
2) "1844"
3) "1896"
4) "Decadent"要返回 Hashes 表所包含的每个字段及其关联值的列表,请运行 hgetall:
hgetall poet:Verlaine1) "nationality"
2) "French"
3) "born"
4) "1844"
5) "died"
6) "1896"
7) "genre"
8) "Decadent"您可以通过运行 hlen 来查找 Hashes 中的字段数,它代表 "hash length":
hlen poet:Verlaine4你可以使用 hstrlen 找到一个字段关联的值字符串的长度,它的全称是 "hash string length":
hstrlen poet:Verlaine nationality8如果 Hashes 不存在,hlen 将返回 (integer) 0。
从 Hashes 中删除字段
要从 Hashes 表中删除字段,请运行 hdel 命令。hdel 可以接受多个字段作为参数,并将返回一个整数,该整数指示从 Hashes 中删除了多少个字段:
hdel poet:Verlaine born died2如果您将一个不存在的字段传递给 hdel,它将忽略该字段,但删除您指定的任何其他现有字段。
结论
本指南详细介绍了用于在 Redis 中创建和管理 Hashes 的许多命令。如果您想在本指南中概述其他相关的命令、参数或过程,请在下面的评论中提出疑问或提出建议。
有关 Redis 命令的更多信息,请参阅关于 如何管理 Redis 数据库的 系列教程。
说明: 本教程基于 Redis 4.0.9 版本编写。在 Redis 4.0.0 及更高版本中,HMSET命令已被标记为废弃(deprecated),建议使用HSET命令同时设置多个字段值。此外,不同 Redis 版本或客户端工具(如 Redli)的输出格式可能略有差异。
版权声明:本文为原创文章,版权归 戴老师的博客 所有,转载请联系博主获得授权。
本文地址:https://1diff.fun/archives/ru-he-zai-redis-zhong-guan-li-hashes.html
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。