如何在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命令即可。该命令接受哈希键的名称、字段字符串和相应值字符串作为参数。

  1. hset poet:Verlaine nationality French

 

Note

提示:在此示例和后续示例中,诗人Verlaine是哈希键。点、短划线和冒号通常用于使多字词的键和字段更易读。确保您的键遵循一致且易于阅读的格式很有帮助。

如果指定的字段是一个新字段并且值设置成功,hset将返回(整数)1。

Output

(integer) 1

然而,如果您未能为哈希键(hash key)包含一个值、字段或名称,hset 将返回一个错误。

要注意的是,如果哈希已经存在,hset会覆盖其中的内容。

  1. hset poet:Verlaine nationality Francais

 

如果该字段已经存在且其值成功更新,则hset将返回(整数)0。

Output

(integer) 0

你也可以使用hsetnx来向哈希表中添加字段,但仅在该字段尚不存在时才有效。如果指定的字段已经存在,则hsetnx不会产生任何效果,并返回(整数)0。

  1. hsetnx poet:Verlaine nationality French

 

Output

(integer) 0

要将多个字段/值对设置到给定的集合中,请使用hmset命令,然后跟上相应的字段/值字符串。

  1. hmset poet:Verlaine born 1844 died 1896 genre Decadent

 

如果hmset成功,它将返回OK。

从散列中检索信息

您可以使用hexists命令来判断给定哈希表中是否存在某个字段。

  1. hexists poet:Verlaine nationality

 

如果该字段存在,hexists将返回整数1;如果不存在,则返回整数0。

要返回字段的值,请运行hget命令,后面跟上哈希键和要检索值的字段。

  1. hget poet:Verlaine nationality

 

Output

“Francais”

hmget 使用相同的语法,但可以返回多个字段的值。

  1. hmget poet:Verlaine born died

 

Output

1) “1844” 2) “1896”

如果你传递给hget或hmget的哈希不存在,两个命令都将返回(nil)。

  1. hmget poet:Dickinson born died

 

Output

1) (nil) 2) (nil)

使用hkeys命令来获取特定哈希中的所有字段的列表。

  1. hkeys poet:Verlaine

 

Output

1) “nationality” 2) “born” 3) “died” 4) “genre”

相反地,运行hvals来检索哈希中保存的值列表。

  1. hvals poet:Verlaine

 

Output

1) “French” 2) “1844” 3) “1896” 4) “Decadent”

运行hgetall命令,返回哈希表中所有字段及其对应的值的列表。

  1. hgetall poet:Verlaine

 

Output

1) “nationality” 2) “French” 3) “born” 4) “1844” 5) “died” 6) “1896” 7) “genre” 8) “Decadent”

你可以通过运行hlen命令(代表“哈希长度”)来找到哈希表中字段的数量。

  1. hlen poet:Verlaine

 

Output

(integer) 4

你可以使用hstrlen来找到与字段关联的值字符串的长度,hstrlen代表”哈希字符串长度”。

  1. hstrlen poet:Verlaine nationality

 

Output

(integer) 8

如果哈希表不存在,hlen将返回(整数)0。

从哈希表中移除字段

要从哈希表中删除一个字段,运行hdel命令。hdel命令可以接受多个字段作为参数,并返回一个整数,表示从哈希表中移除了多少个字段。

  1. hdel poet:Verlaine born died

 

Output

(integer) 2

如果您在hdel命令中传递了一个不存在的字段,它将忽略该字段,但会删除您指定的任何其他已存在字段。

结论

本指南详细介绍了在Redis中用于创建和管理哈希的一些命令。如果您对本指南中的其他相关命令、参数或过程有任何问题或建议,请在评论中提出。

有关Redis命令的更多信息,请参考我们的教程系列《如何管理Redis数据库》。

广告
将在 10 秒后关闭
bannerAds