第5章 集合

        Redis的集合(set)键允许用户将任意多个各不相同的元素存储到集合 中,这些元素既可以是文本数据,也可以是二进制数据。虽然第4章中 介绍的列表键也允许我们存储多个元素,但集合与列表有以下两个明显的区别

        ·列表可以存储重复元素,而集合只会存储非重复元素,尝试将一个已 存在的元素添加到集合将被忽略。

        ·列表以有序方式存储元素,而集合则以无序方式存储元素。

        这两个区别带来的差异主要跟命令的复杂度有关:

        ·在执行像LINSERT和LREM这样的列表命令时,即使命令只针对单个 列表元素,程序有时也不得不遍历整个列表以确定指定的元素是否存 在,因此这些命令的复杂度都为O(N)。

        ·对于集合来说,因为所有针对单个元素的集合命令都不需要遍历整个 集合,所以复杂度都为O(1)。

        因此当我们需要存储多个元素时,就可以考虑这些元素是否可以以无序的方式存储,并且是否不会出现重复,如果是,那么就可以使用集合来存储这些元素,从而有效地利用集合操作的效率优势。

        作为例子,图5-1展示了一个名为databases的集合,这个集合里面包含 了"Redis"、“MongoDB”、"MySQL"等8个元素。

redis set和list redis set和list的区别_并集

        Redis为集合键提供了一系列操作命令,通过使用这些命令,用户可以:

        ·将新元素添加到集合中,或者从集合中移除已有的元素。

        ·将指定的元素从一个集合移动到另一个集合。

        ·获取集合包含的所有元素。

        ·获取集合包含的元素数量。

        ·检查给定元素是否存在于集合中。

        ·从集合中随机地获取指定数量的元素。

        ·对多个集合执行交集、并集、差集计算。

        本章接下来将对Redis集合键的各个命令进行介绍,并说明如何使用这 些命令去解决各种实际存在的问题。