向爬虫而生---Redis 基石篇4 <拓展Set>
前言:
延伸上一篇:https://blog.csdn.net/m0_56758840/article/details/135349796
挖一挖集合的一些骚操作~
正文:
基本操作:
集合是Redis中的一种数据类型,它具有以下几个基本概念和特性:无重复、无序和集合间的运算。下面是几个常用的集合命令,以及一些案例来说明:
-
sadd key <value>
:将一个或多个成员添加到集合中。127.0.0.1:6379> sadd myset 1 2 3 (integer) 3 127.0.0.1:6379> sadd myset 3 4 (integer) 1
在上述示例中,我们使用
sadd
命令将元素1、2、3添加到名为myset
的集合中。首次添加时,返回值为3,表示成功添加了3个成员。然后,我们再次添加元素3和4,但由于集合不允许重复成员,所以返回值为1,表示只有元素4被成功添加到集合中。 -
srem key <value>
:从集合中移除一个或多个成员。127.0.0.1:6379> srem myset 2 3 (integer) 2
在上述示例中,我们使用
srem
命令从名为myset
的集合中移除元素2和3。返回值为2,表示成功移除了2个成员。 -
scard key
:计算集合的大小(基数)。127.0.0.1:6379> scard myset (integer) 2
在上述示例中,我们使用
scard
命令计算名为myset
的集合的大小。返回值为2,表示集合中有2个成员。 -
sismember key <value>
:判断指定成员是否属于集合。127.0.0.1:6379> sismember myset 1 (integer) 1 127.0.0.1:6379> sismember myset 5 (integer) 0
在上述示例中,我们使用
sismember
命令判断元素1和5是否属于集合。返回值为1表示元素1属于集合,返回值为0表示元素5不属于集合。 -
srandmember key <count>
:从集合中随机获取一个或多个成员。127.0.0.1:6379> srandmember myset 2 1) "1" 2) "4"
在上述示例中,我们使用
srandmember
命令从名为myset
的集合中随机获取2个成员。返回的成员是随机选择的,每次执行可能得到不同的结果。 -
spop key
:从集合中随机弹出一个成员。127.0.0.1:6379> spop myset "4"
在上述示例中,我们使用
spop
命令从名为myset
的集合中随机弹出一个成员。弹出的成员是随机选择的,并从集合中移除。 -
smembers key
:获取集合中的所有成员。127.0.0.1:6379> smembers myset 1) "1"
在上述示例中,我们使用
smembers
命令获取名为myset
的集合中的所有成员。(容易造成阻塞,慎用)
通过使用这些集合命令,我们可以对集合进行添加、删除、统计等操作,还可以判断成员是否属于集合,并从集合中随机获取成员或弹出成员。这些命令非常适用于需要对成员进行唯一性管理、随机选择或进行集合间的运算等场景。.
集合的关键用法:
集合的关键用法中,包括了三个关于集合间运算的命令:sdiff(差集)、sinter(交集)、sunion(并集)。
sdiff
命令:
sdiff key1 [key2 ...]
,返回给定集合之间的差集。- 差集是指在第一个集合中存在,但在其他集合中不存在的成员。
# 创建两个集合
127.0.0.1:6379> sadd set1 1 2 3 4
(integer) 4
127.0.0.1:6379> sadd set2 3 4 5 6
(integer) 4
# 计算集合的差集
127.0.0.1:6379> sdiff set1 set2
1) "1"
2) "2"
使用sadd
命令创建了两个集合set1
和set2
,分别包含了不同的成员。然后,通过使用sdiff
命令计算set1
和set2
之间的差集,即在set1
中存在但在set2
中不存在的成员,返回结果为1
和2
。
sinter
命令:
sinter key1 [key2 ...]
,返回给定集合之间的交集。- 交集是指在所有给定集合中都存在的成员。
# 创建两个集合
127.0.0.1:6379> sadd set1 1 2 3 4
(integer) 4
127.0.0.1:6379> sadd set2 3 4 5 6
(integer) 4
# 计算集合的交集
127.0.0.1:6379> sinter set1 set2
1) "3"
2) "4"
使用sadd
命令创建了两个集合set1
和set2
,分别包含了不同的成员。然后,通过使用sinter
命令计算set1
和set2
之间的交集,即在set1
和set2
中都存在的成员,返回结果为3
和4
。
sunion
命令:
sunion key1 [key2 ...]
,返回给定集合之间的并集。- 并集是指将所有给定集合中的成员合并起来,去除重复的成员。
# 创建两个集合
127.0.0.1:6379> sadd set1 1 2 3 4
(integer) 4
127.0.0.1:6379> sadd set2 3 4 5 6
(integer) 4
# 计算集合的并集
127.0.0.1:6379> sunion set1 set2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
使用sadd
命令创建了两个集合set1
和set2
,分别包含了不同的成员。然后,通过使用sunion
命令计算set1
和set2
之间的并集,即将set1
和set2
中所有的成员合并起来,去除重复的成员,返回结果为1
、2
、3
、4
、5
和6
。
应用层面:
在Redis的集合数据类型中,可以应用于许多不同的开发场景,例如:
1.标签系统:
集合可以作为标签的容器,用于对数据进行标记和分类。例如,可以将用户标记为"管理员"、"VIP"、"新用户"等,以便更轻松地进行用户分类和查询。?
- ????????sadd: 添加标签到集合中。
- ????????srem: 从集合中删除指定的标签。
- ????????smembers: 获取集合中的所有标签。???????
2.实时统计:
通过将数据元素存储在集合中,可以进行实时的统计和计数操作。例如,可以使用集合记录每天访问网站的独立IP,并通过计算集合的大小获取独立访客数。????????
- ????????sadd: 将数据元素添加到集合中,用于记录每个数据元素的出现。
- ????????scard: 获取集合的大小,可用于统计独立数据元素的数量。
3.好友关系:
集合可以用于表示用户之间的好友关系。通过将好友的ID存储在集合中,可以轻松地进行好友列表、共同好友和好友推荐等操作。
- ????????sadd: 将好友的ID添加到集合中。
- ????????srem: 从集合中删除指定的好友ID。
- ????????sismember: 检查指定的用户是否为好友。
- ????????smembers: 获取当前用户的所有好友。
4.权限管理:
集合可以用于实现权限管理系统。例如,可以将用户的权限名称存储在一个集合中,然后使用sismember
命令来检查用户是否具有特定权限。
- ????????????????sadd: 将权限名称添加到集合中。
- ????????????????srem: 从集合中删除指定的权限名称。
- ????????????????sismember: 检查用户是否具有指定的权限。
5.兴趣匹配:
通过将用户的兴趣爱好存储在集合中,可以通过交集运算来找到具有共同兴趣的用户或进行兴趣匹配。
- ????????sadd: 将用户的兴趣爱好添加到集合中。
- ????????sinter: 计算两个或多个集合的交集,找到具有共同兴趣的用户。
6.订阅者系统:
集合可以用于存储和管理订阅者信息。例如,将订阅集合中的用户与发布集合中的发布者进行匹配,以实现消息发布和订阅模式。
- ????????sadd: 将订阅者的信息添加到集合中。
- ????????srem: 从集合中删除指定的订阅者。
- ????????smembers: 获取所有订阅者的信息。
以上仅是一些在开发中使用Redis集合的示例,实际上,Redis的集合数据类型非常灵活和多功能,适用于许多实际场景。通过适当地使用集合命令和数据结构,可以构建高效、灵活和可扩展的应用程序。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!