如何在Redis中管理散列
简介
Redis 是一个开源的、基于内存的键值数据存储系统。Redis 的哈希是一种数据类型,它表示字符串字段和字符串值之间的映射关系。哈希可以存储许多字段-值对,并且设计得不占用过多空间,非常适合表示数据对象。例如,一个哈希可以表示一个客户,并包含姓名、地址、电子邮件或客户ID等字段。
本教程将讨论如何在Redis中管理哈希表,从创建哈希表到检索和删除其中保存的数据。
怎样使用这个指南
本指南是一份提供自包含示例的备忘录,我们鼓励您跳转到与您完成任务相关的任何部分。
本指南中显示的命令已在运行Redis版本6.0.16的Ubuntu 22.04服务器上进行了测试。要设置类似的环境,您可以按照我们在《如何在Ubuntu 22.04上安装和保护Redis》指南中的第1步进行操作。我们将通过使用Redis命令行界面redis-cli来运行这些命令,展示它们的行为。如果您使用不同的Redis接口,例如Redli,某些命令的确切输出可能会有所不同。
或者,您可以提供一个托管的Redis数据库实例来测试这些命令,但请注意,根据您的数据库提供商允许的控制级别,本指南中的某些命令可能无法按描述运行。要提供DigitalOcean托管的数据库,请参考我们的托管数据库产品文档进行操作。然后,您必须安装Redli或设置一个TLS隧道,以通过TLS连接到托管的数据库。
创建散列
创建哈希表,运行hset命令即可。该命令接受哈希键的名称、字段字符串和相应值字符串作为参数。
- hset poet:Verlaine nationality French
Note
如果指定的字段是一个新字段并且值设置成功,hset将返回(整数)1。
(integer) 1
然而,如果您未能为哈希键(hash key)包含一个值、字段或名称,hset 将返回一个错误。
要注意的是,如果哈希已经存在,hset会覆盖其中的内容。
- hset poet:Verlaine nationality Francais
如果该字段已经存在且其值成功更新,则hset将返回(整数)0。
(integer) 0
你也可以使用hsetnx来向哈希表中添加字段,但仅在该字段尚不存在时才有效。如果指定的字段已经存在,则hsetnx不会产生任何效果,并返回(整数)0。
- hsetnx poet:Verlaine nationality French
(integer) 0
要将多个字段/值对设置到给定的集合中,请使用hmset命令,然后跟上相应的字段/值字符串。
- hmset poet:Verlaine born 1844 died 1896 genre Decadent
如果hmset成功,它将返回OK。
从散列中检索信息
您可以使用hexists命令来判断给定哈希表中是否存在某个字段。
- hexists poet:Verlaine nationality
如果该字段存在,hexists将返回整数1;如果不存在,则返回整数0。
要返回字段的值,请运行hget命令,后面跟上哈希键和要检索值的字段。
- hget poet:Verlaine nationality
“Francais”
hmget 使用相同的语法,但可以返回多个字段的值。
- hmget poet:Verlaine born died
1) “1844” 2) “1896”
如果你传递给hget或hmget的哈希不存在,两个命令都将返回(nil)。
- hmget poet:Dickinson born died
1) (nil) 2) (nil)
使用hkeys命令来获取特定哈希中的所有字段的列表。
- hkeys poet:Verlaine
1) “nationality” 2) “born” 3) “died” 4) “genre”
相反地,运行hvals来检索哈希中保存的值列表。
- hvals poet:Verlaine
1) “French” 2) “1844” 3) “1896” 4) “Decadent”
运行hgetall命令,返回哈希表中所有字段及其对应的值的列表。
- hgetall poet:Verlaine
1) “nationality” 2) “French” 3) “born” 4) “1844” 5) “died” 6) “1896” 7) “genre” 8) “Decadent”
你可以通过运行hlen命令(代表“哈希长度”)来找到哈希表中字段的数量。
- hlen poet:Verlaine
(integer) 4
你可以使用hstrlen来找到与字段关联的值字符串的长度,hstrlen代表”哈希字符串长度”。
- hstrlen poet:Verlaine nationality
(integer) 8
如果哈希表不存在,hlen将返回(整数)0。
从哈希表中移除字段
要从哈希表中删除一个字段,运行hdel命令。hdel命令可以接受多个字段作为参数,并返回一个整数,表示从哈希表中移除了多少个字段。
- hdel poet:Verlaine born died
(integer) 2
如果您在hdel命令中传递了一个不存在的字段,它将忽略该字段,但会删除您指定的任何其他已存在字段。
结论
本指南详细介绍了在Redis中用于创建和管理哈希的一些命令。如果您对本指南中的其他相关命令、参数或过程有任何问题或建议,请在评论中提出。
有关Redis命令的更多信息,请参考我们的教程系列《如何管理Redis数据库》。