介绍
在这个实验(Lab)中,你将探索 Redis 集合(set)操作,重点是操作唯一字符串的无序集合。你将学习如何使用 SADD
命令向集合中添加元素,使用 SUNION
执行集合并集操作,使用 SINTER
查找公共元素,以及使用 SDIFF
识别集合之间的差异。最后,你将学习如何存储集合操作的结果以供后续使用。
在这个实验(Lab)中,你将探索 Redis 集合(set)操作,重点是操作唯一字符串的无序集合。你将学习如何使用 SADD
命令向集合中添加元素,使用 SUNION
执行集合并集操作,使用 SINTER
查找公共元素,以及使用 SDIFF
识别集合之间的差异。最后,你将学习如何存储集合操作的结果以供后续使用。
在这一步中,你将学习如何使用 SADD
命令向 Redis 集合(set)中添加元素。Redis 中的集合是唯一字符串的无序集合。这意味着集合中的每个元素都必须是唯一的,并且元素添加到集合中的顺序不会被保留。
SADD
命令将一个或多个成员添加到集合中。如果指定的成员已经是集合的成员,则会被忽略。如果集合不存在,则会创建一个包含指定成员的新集合。
让我们首先连接到 Redis 服务器。打开你的终端并执行以下命令:
redis-cli
这个命令将打开 Redis 命令行界面(command-line interface,CLI)。
现在,让我们向名为 my_set
的集合中添加一些元素。执行以下命令:
SADD my_set "apple" "banana" "cherry"
这个命令会将字符串 "apple"、"banana" 和 "cherry" 添加到集合 my_set
中。输出将是一个整数,表示成功添加到集合中的元素数量。在这种情况下,输出应为 3
。
(integer) 3
现在,让我们尝试添加一个已经存在于集合中的元素。执行以下命令:
SADD my_set "apple"
这个命令将尝试将字符串 "apple" 添加到集合 my_set
中。但是,由于 "apple" 已经是集合的成员,它将被忽略。输出将为 0
,表示没有添加任何新元素。
(integer) 0
要验证元素是否已添加到集合中,你可以使用 SMEMBERS
命令。执行以下命令:
SMEMBERS my_set
这个命令将返回集合 my_set
的所有成员的列表。输出应为:
1) "cherry"
2) "banana"
3) "apple"
请注意,输出中元素的顺序可能与它们添加的顺序不同。这是因为集合是无序的集合。
最后,退出 Redis CLI:
exit
退出 redis-cli
非常重要,这样你的命令才会被记录。
你现在已经成功地使用 SADD
命令向 Redis 集合中添加了元素。这是在 Redis 中使用集合的基本操作,它将在后续步骤中用于执行更复杂的操作。
在这一步中,你将学习如何使用 SUNION
命令计算多个 Redis 集合(set)的并集(union)。集合的并集是一个新的集合,其中包含任何原始集合中存在的所有唯一元素。
首先,让我们向一个名为 my_set2
的新集合中添加一些元素。使用以下命令连接到 Redis 服务器:
redis-cli
现在,向 my_set2
添加元素:
SADD my_set2 "banana" "grape" "orange"
这个命令会将 "banana"、"grape" 和 "orange" 添加到 my_set2
。输出应为 3
。
(integer) 3
现在我们有了两个集合,my_set
(包含 "apple"、"banana"、"cherry")和 my_set2
(包含 "banana"、"grape"、"orange"),我们可以使用 SUNION
命令计算它们的并集。执行以下命令:
SUNION my_set my_set2
这个命令将返回 my_set
和 my_set2
的并集。输出将是两个集合中存在的所有唯一元素的列表:
1) "orange"
2) "grape"
3) "apple"
4) "banana"
5) "cherry"
请注意,"banana" 在结果中只出现一次,即使它同时存在于 my_set
和 my_set2
中。这是因为集合只包含唯一元素。结果中元素的顺序不能保证。
最后,退出 Redis CLI:
exit
SUNION
命令将集合的并集直接返回给客户端。如果你想将结果存储在一个新的集合中,你可以使用 SUNIONSTORE
命令,这个命令不在本实验(Lab)的范围内。
在这一步中,你已经学习了如何使用 SUNION
命令计算多个 Redis 集合的并集。这是一个有用的操作,可以将来自多个集合的数据合并到一个集合中。
在这一步中,你将学习如何使用 SINTER
命令计算多个 Redis 集合(set)的交集(intersection)。集合的交集是一个新的集合,其中仅包含 所有 原始集合中都存在的元素。
使用以下命令连接到 Redis 服务器:
redis-cli
我们已经有两个集合,my_set
(包含 "apple"、"banana"、"cherry")和 my_set2
(包含 "banana"、"grape"、"orange")。让我们使用 SINTER
命令计算它们的交集。执行以下命令:
SINTER my_set my_set2
这个命令将返回 my_set
和 my_set2
的交集。输出将是两个集合中都存在的所有元素的列表:
1) "banana"
请注意,只有 "banana" 同时存在于 my_set
和 my_set2
中。因此,这两个集合的交集是一个仅包含 "banana" 的集合。
让我们添加第三个集合,名为 my_set3
,并将 "banana" 和 "apple" 添加到其中。
SADD my_set3 "banana" "apple"
输出应为 2
。
(integer) 2
现在,让我们计算 my_set
、my_set2
和 my_set3
的交集。执行以下命令:
SINTER my_set my_set2 my_set3
这个命令将返回所有三个集合的交集。输出将是:
1) "banana"
只有 "banana" 存在于所有三个集合中。
最后,退出 Redis CLI:
exit
SINTER
命令将集合的交集直接返回给客户端。如果你想将结果存储在一个新的集合中,你可以使用 SINTERSTORE
命令,你将在稍后学习它。
在这一步中,你已经学习了如何使用 SINTER
命令计算多个 Redis 集合的交集。这是一个有用的操作,用于查找多个集合之间的共同元素。
在这一步中,你将学习如何使用 SDIFF
命令计算 Redis 集合(set)之间的差集(difference)。集合的差集是一个新的集合,其中仅包含存在于第一个集合中,而不存在于任何后续集合中的元素。
使用以下命令连接到 Redis 服务器:
redis-cli
我们有三个集合:my_set
(包含 "apple"、"banana"、"cherry"),my_set2
(包含 "banana"、"grape"、"orange"),以及 my_set3
(包含 "banana"、"apple")。让我们使用 SDIFF
命令计算 my_set
和 my_set2
之间的差集。执行以下命令:
SDIFF my_set my_set2
这个命令将返回 my_set
和 my_set2
之间的差集。输出将是存在于 my_set
中,但不存在于 my_set2
中的所有元素的列表:
1) "apple"
2) "cherry"
"apple" 和 "cherry" 在 my_set
中,但不在 my_set2
中。"banana" 在两个集合中都存在,因此它不包含在结果中。
现在,让我们计算 my_set
与 my_set2
和 my_set3
之间的差集。执行以下命令:
SDIFF my_set my_set2 my_set3
这个命令将返回 my_set
与 my_set2
和 my_set3
的并集之间的差集。输出将是:
1) "cherry"
"apple" 在 my_set
中,但也在 my_set3
中,因此它被排除。"banana" 在 my_set
中,但也在 my_set2
和 my_set3
中,因此它也被排除。只有 "cherry" 专门存在于 my_set
中。
最后,退出 Redis CLI:
exit
SDIFF
命令将集合的差集直接返回给客户端。如果你想将结果存储在一个新的集合中,你可以使用 SDIFFSTORE
命令(本实验(Lab)未涵盖)。
在这一步中,你已经学习了如何使用 SDIFF
命令计算 Redis 集合之间的差集。这是一个有用的操作,用于查找特定集合独有的元素。
在这一步中,你将学习如何使用 SINTERSTORE
命令将交集(intersection)操作的结果存储到一个新的集合(set)中。当你想要对集合的交集执行进一步的操作,而又不想每次都重新计算它时,这非常有用。
使用以下命令连接到 Redis 服务器:
redis-cli
我们有三个集合:my_set
(包含 "apple"、"banana"、"cherry"),my_set2
(包含 "banana"、"grape"、"orange"),以及 my_set3
(包含 "banana"、"apple")。在上一步中,我们计算了这些集合的交集,发现只有 "banana" 存在于所有三个集合中。
现在,让我们使用 SINTERSTORE
命令将 my_set
、my_set2
和 my_set3
的交集结果存储到一个名为 intersection_set
的新集合中。执行以下命令:
SINTERSTORE intersection_set my_set my_set2 my_set3
这个命令将计算 my_set
、my_set2
和 my_set3
的交集,并将结果存储在一个名为 intersection_set
的新集合中。输出将是一个整数,表示结果集合中元素的数量。在这种情况下,输出应该是 1
,因为交集只包含一个元素("banana")。
(integer) 1
为了验证交集是否已正确存储,你可以使用 SMEMBERS
命令查看 intersection_set
的成员。执行以下命令:
SMEMBERS intersection_set
这个命令将返回集合 intersection_set
的所有成员的列表。输出应该是:
1) "banana"
这证实了 my_set
、my_set2
和 my_set3
的交集已成功存储在 intersection_set
中。
最后,退出 Redis CLI:
exit
在这一步中,你已经学习了如何使用 SINTERSTORE
命令将交集操作的结果存储到一个新的集合中。这允许你在后续操作中重用交集的结果,而无需重新计算它。
在这个实验(Lab)中,你学习了如何使用 SADD
命令向 Redis 集合(set)添加元素。Redis 集合是唯一字符串的无序集合,这意味着每个元素都必须是唯一的,并且不保留顺序。
SADD
命令向集合添加一个或多个成员,忽略重复项。本实验演示了如何向集合添加元素,观察指示已添加元素数量的返回值,并使用 SMEMBERS
验证集合的内容。由于集合的无序性,SMEMBERS
的输出顺序可能与插入顺序不同。你还学习了如何使用 SUNION
计算集合的并集(union),使用 SINTER
查找公共元素,使用 SDIFF
识别集合之间的差异,以及使用 SINTERSTORE
存储集合操作的结果以供以后使用。请记住在每个步骤之后退出 redis-cli
,以确保你的命令被记录。