Redis 支持通过多种数据类型来存储项目集合。其中,包括列表、集合和哈希。上周的博文介绍了列表(List)数据类型并重点介绍了一些用于管理列表(List)的主要命令。在今天的文章中,我们将转向关注集合(Set)数据类型。在 Redis 中,集合(Set)与列表(List)相似,但是,集合(Set)中的元素是无序的,并且每个元素是唯一的。本文将介绍一些用于管理集合(Set)的主要命令,以及在 redis-cli 和 Navicat for Redis 中使用集合(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 for Redis 编辑器中,集合(Set)的值用“元素”来表示。点击元素右侧的省略号 […] 按钮,可打开特定编辑器,你可以在此输入单个集合元素:
点击“应用”按钮可将新的集合或元素添加进去,Navicat 会自动移除重复的值。
使用 SREM 命令从集合中移除成员:
SREM key member [member ...]
SREM vehicles "Mazda" "Mercedes" // 2 SREM vehicles "Dodge" // 0
与 SADD 命令相似,SREM 命令也会返回被移除成员的数量。
在 Navicat 编辑器中,我们可以选中任意集合元素并点击位于元素值底部的删除 [-] 按钮来移除它:
为了验证一个成员是否属于一个集合,我们可以使用 SISMEMBER 命令:
SISMEMBER key member
如果成员属于集合,该命令返回 1;否则,返回 0:
SISMEMBER vehicles "Infiniti" // 1 SISMEMBER vehicles "Alfa Romeo" // 0
为了展示集合中存在的所有成员,我们可以使用 SMEMBERS 命令:
SMEMBERS key
让我们来看下“vehicles”集合当前所包含的成员:
SMEMBERS vehicles // returns "Infiniti", "Ford", "Porsche"
我们可以使用 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 天免费试用完整版功能。