Redis 数据类型及操作-集合

2023-04-15 14:36:53 浏览数 (1)

三、集合

集合(Set)是Redis提供的一种无序、不重复的数据结构,常用于存储多个元素之间的关系,如朋友列表、标签等。集合可以进行交、并、差等集合运算,也可以判断某个元素是否存在于集合中。集合中存储的元素必须是字符串类型的。

3.1. SADD

SADD命令用于向集合中添加一个或多个新元素,语法为:

代码语言:javascript复制
SADD key member [member ...]

其中,key为集合的键名,member为要添加到集合中的新元素。可以同时添加多个元素,每个元素之间用空格分隔。如果添加的元素已经存在于集合中,则不会重复添加。

例如,要向键名为set的集合中添加元素abc,可以使用以下命令:

代码语言:javascript复制
SADD set a b c

3.2. SCARD

SCARD命令用于返回集合中元素的数量,语法为:

代码语言:javascript复制
SCARD key

其中,key为集合的键名。

例如,要查询键名为set的集合中元素的数量,可以使用以下命令:

代码语言:javascript复制
SCARD set

3.3. SISMEMBER

SISMEMBER命令用于判断指定元素是否存在于集合中,如果存在则返回1,否则返回0,语法为:

代码语言:javascript复制
SISMEMBER key member

其中,key为集合的键名,member为要判断的元素。

例如,要判断键名为set的集合中是否存在元素a,可以使用以下命令:

代码语言:javascript复制
SISMEMBER set a

3.4. SMEMBERS

SMEMBERS命令用于返回集合中的所有元素,语法为:

代码语言:javascript复制
SMEMBERS key

其中,key为集合的键名。

例如,要查询键名为set的集合中的所有元素,可以使用以下命令:

代码语言:javascript复制
SMEMBERS set

3.5. SPOP

SPOP命令用于随机弹出集合中的一个元素,并返回该元素的值,语法为:

代码语言:javascript复制
SPOP key

其中,key为集合的键名。

例如,要从键名为set的集合中随机弹出一个元素,可以使用以下命令:

代码语言:javascript复制
SPOP set

3.6. SRANDMEMBER

SRANDMEMBER命令用于随机返回集合中的一个元素,语法为:

代码语言:javascript复制
SRANDMEMBER key [count]

其中,key为集合的键名,count为返回元素的数量,如果不指定该参数,则只返回一个元素。如果count为正数,则返回的元素不会重复;如果count为负数,则可能会重复返回元素。

例如,要从键名为set的集合中随机返回两个不重复的元素,可以使用以下命令:

代码语言:javascript复制
SRANDMEMBER set 2

3.7. SREM

SREM命令用于从集合中删除一个或多个元素,语法为:

代码语言:javascript复制
SREM key member [member ...]

其中,key为集合的键名,member为要删除的元素。可以同时删除多个元素,每个元素之间用空格分隔。

例如,要从键名为set的集合中删除元素ab,可以使用以下命令:

代码语言:javascript复制
SREM set a b

3.8. SUNION

SUNION命令用于返回多个集合的并集,语法为:

代码语言:javascript复制
SUNION key [key ...]

其中,key为要求并集的集合的键名。

例如,要求键名为set1set2的两个集合的并集,可以使用以下命令:

代码语言:javascript复制
SUNION set1 set2

3.9. SUNIONSTORE

SUNIONSTORE命令用于将多个集合的并集存储到一个新的集合中,语法为:

代码语言:javascript复制
SUNIONSTORE destination key [key ...]

其中,destination为新集合的键名,key为要求并集的集合的键名。

例如,要将键名为set1set2的两个集合的并集存储到一个新的集合中,键名为set3,可以使用以下命令:

代码语言:javascript复制
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

0 人点赞