三、集合
集合(Set)是Redis提供的一种无序、不重复的数据结构,常用于存储多个元素之间的关系,如朋友列表、标签等。集合可以进行交、并、差等集合运算,也可以判断某个元素是否存在于集合中。集合中存储的元素必须是字符串类型的。
3.1. SADD
SADD命令用于向集合中添加一个或多个新元素,语法为:
代码语言:javascript复制SADD key member [member ...]
其中,key
为集合的键名,member
为要添加到集合中的新元素。可以同时添加多个元素,每个元素之间用空格分隔。如果添加的元素已经存在于集合中,则不会重复添加。
例如,要向键名为set
的集合中添加元素a
、b
和c
,可以使用以下命令:
SADD set a b c
3.2. SCARD
SCARD命令用于返回集合中元素的数量,语法为:
代码语言:javascript复制SCARD key
其中,key
为集合的键名。
例如,要查询键名为set
的集合中元素的数量,可以使用以下命令:
SCARD set
3.3. SISMEMBER
SISMEMBER命令用于判断指定元素是否存在于集合中,如果存在则返回1,否则返回0,语法为:
代码语言:javascript复制SISMEMBER key member
其中,key
为集合的键名,member
为要判断的元素。
例如,要判断键名为set
的集合中是否存在元素a
,可以使用以下命令:
SISMEMBER set a
3.4. SMEMBERS
SMEMBERS命令用于返回集合中的所有元素,语法为:
代码语言:javascript复制SMEMBERS key
其中,key
为集合的键名。
例如,要查询键名为set
的集合中的所有元素,可以使用以下命令:
SMEMBERS set
3.5. SPOP
SPOP命令用于随机弹出集合中的一个元素,并返回该元素的值,语法为:
代码语言:javascript复制SPOP key
其中,key
为集合的键名。
例如,要从键名为set
的集合中随机弹出一个元素,可以使用以下命令:
SPOP set
3.6. SRANDMEMBER
SRANDMEMBER命令用于随机返回集合中的一个元素,语法为:
代码语言:javascript复制SRANDMEMBER key [count]
其中,key
为集合的键名,count
为返回元素的数量,如果不指定该参数,则只返回一个元素。如果count
为正数,则返回的元素不会重复;如果count
为负数,则可能会重复返回元素。
例如,要从键名为set
的集合中随机返回两个不重复的元素,可以使用以下命令:
SRANDMEMBER set 2
3.7. SREM
SREM命令用于从集合中删除一个或多个元素,语法为:
代码语言:javascript复制SREM key member [member ...]
其中,key
为集合的键名,member
为要删除的元素。可以同时删除多个元素,每个元素之间用空格分隔。
例如,要从键名为set
的集合中删除元素a
和b
,可以使用以下命令:
SREM set a b
3.8. SUNION
SUNION命令用于返回多个集合的并集,语法为:
代码语言:javascript复制SUNION key [key ...]
其中,key
为要求并集的集合的键名。
例如,要求键名为set1
和set2
的两个集合的并集,可以使用以下命令:
SUNION set1 set2
3.9. SUNIONSTORE
SUNIONSTORE命令用于将多个集合的并集存储到一个新的集合中,语法为:
代码语言:javascript复制SUNIONSTORE destination key [key ...]
其中,destination
为新集合的键名,key
为要求并集的集合的键名。
例如,要将键名为set1
和set2
的两个集合的并集存储到一个新的集合中,键名为set3
,可以使用以下命令:
SUNIONSTORE set3 set1 set2
3.10. 集合数据类型示例
下面是一些常见的使用集合数据类型的场景和示例:
记录网站访客的IP地址
代码语言:javascript复制SADD visitors 192.168.1.1
SADD visitors 192.168.1.2
SADD visitors 192.168.1.3
统计每个用户的访问次数
代码语言:javascript复制SADD user1_pageview home
SADD user1_pageview products
SADD user2_pageview home
SADD user2_pageview about
存储用户标签
代码语言:javascript复制SADD user1_tags music
SADD user1_tags sports
SADD user1_tags movies
SADD user2_tags music
SADD user2_tags news
存储商品分类信息
代码语言:javascript复制SADD electronic_products mobile_phone
SADD electronic_products laptop
SADD clothing_shoes_shopping dress
SADD clothing_shoes_shopping shoes