Navicat 博客

Redis 集合(Set)快速指南 2023 年 9 月 8 日,由 Robert Gravelle 撰写

Redis 支持通过多种数据类型来存储项目集合。其中,包括列表、集合和哈希。上周的博文介绍了列表(List)数据类型并重点介绍了一些用于管理列表(List)的主要命令。在今天的文章中,我们将转向关注集合(Set)数据类型。在 Redis 中,集合(Set)与列表(List)相似,但是,集合(Set)中的元素是无序的,并且每个元素是唯一的。本文将介绍一些用于管理集合(Set)的主要命令,以及在 redis-cli 和 Navicat for Redis 中使用集合(Set)的方法。

创建集合(Set)

在 Redis 中,我们可以使用 SADD 命令创建一个集合(Set),该命令会将指定的成员添加到键(key)中:

SADD key member [member ...]

如前面所提到的,每个元素必须是唯一的。因此,如果指定成员已经存在集合中,其将被忽视。如果键(key)不存在,将创建新集合(Set)并添加唯一的指定成员。如果键(key)已经存在或不是集合类型,则返回一个错误。

此命令用于创建一个“vehicles”集合:

SADD vehicles "Infiniti"         // 1
SADD vehicles "Mazda"            // 1
SADD vehicles "Ford" "Mercedes"    // 2
SADD vehicles "Porsche" "Mercedes" // 1

需要注意的是,SADD 命令返回的是在该语句中被添加的新成员数量,而不是集合的大小。我们从最后一行命令可以看出,只添加了一个元素,因为“Mercedes”值已经存在。

在 Navicat 中创建一个集合(Set)

Navicat for Redis 编辑器中,集合(Set)的值用“元素”来表示。点击元素右侧的省略号 […] 按钮,可打开特定编辑器,你可以在此输入单个集合元素:

vehicles_set_in_navicat_editor (69K)

点击“应用”按钮可将新的集合或元素添加进去,Navicat 会自动移除重复的值。

从集合(Set)中移除成员

使用 SREM 命令从集合中移除成员:

SREM key member [member ...]
SREM vehicles "Mazda" "Mercedes" // 2
SREM vehicles "Dodge" // 0

与 SADD 命令相似,SREM 命令也会返回被移除成员的数量。

在 Navicat 编辑器中,我们可以选中任意集合元素并点击位于元素值底部的删除 [-] 按钮来移除它:

delete_button_in_navicat_editor (25K)

验证值是否存在

为了验证一个成员是否属于一个集合,我们可以使用 SISMEMBER 命令:

SISMEMBER key member

如果成员属于集合,该命令返回 1;否则,返回 0:

SISMEMBER vehicles "Infiniti" // 1
SISMEMBER vehicles "Alfa Romeo" // 0

查看集合(Set)

为了展示集合中存在的所有成员,我们可以使用 SMEMBERS 命令:

SMEMBERS key

让我们来看下“vehicles”集合当前所包含的成员:

SMEMBERS vehicles
// returns "Infiniti", "Ford", "Porsche"

合并集合(Set)

我们可以使用 SUNION 命令非常容易地合并集合(Set):

SUNION key [key ...]

SUNION 命令中的每个参数代表一个集合,并要将其合并到更大的集合中。需要注意的是,为了保证元素的唯一性,任何重复的元素都会被移除。

假设我们还有另一个名为“more_vehicles”的集合,其包含“Corvette”和“Alfa Romeo”这两个值。我们可通过以下方式查看“vehicles”和“more_vehicles”这两个集合的所有成员:

SUNION vehicles more_vehicles
// "Infiniti", "Ford", "Porsche", "Corvette", "Alfa Romeo"

总论

本文主要介绍了一些用于管理 Redis 集合( Set )的主要命令,以及在 redis-cli Navicat for Redis 中使用集合(Set)的方法。

若想试用 Navicat for Redis ,你可点击 此处 下载它,可享 14 天免费试用完整版功能。

Navicat 文章
频道条目
分享
文章归档