set集合
集合就是把一些有关联的数据放到一起
集合内的元素不能重复
集合内的元素没有顺序
普通命令
sadd
将一个或者多个元素添加到集合中
注:这些元素是无序并且不重复的
如果是重复的元素则会返回空
smembers
获得set中的所有元素
sismember
判断一个元素是否在集合中
如果存在,则会返回1,否则返回0
srandmember
随机获取一个或者多个元素
scard
获得集合中元素的个数
spop
随机删除集合中的一个元素,count表示删除的个数
可以判断出两次删除的元素是不一样的,判断其是无序删除
smove
将元素从一个集合中取出放入另一个集合
srem
将指定的元素从集合中删除
可以一次性删除多个指定的元素
集合间的操作
进行这三种操作:交集,并集,差集
sinter
获得两个集合的交集
sinterstore
获得集合之间的交集,并保存到集合中
将交集保存到m3中
sunion
获得给定集合的并集
sunionstore
获得给定集合的并集,并且保存到集合中
sdiff
获得给定集合的差集
m1和m2的差集:在m1中存在,在m2中不存在
m2和m1的差集:在m2中存在,在m1中不存在
所以得到的结果是不一样的
sdiffstore
获得集合间的差集,并且保存到集合中
内部编码
intset整数集合
为了节省空间,特定优化的结构,当元素是整数的时候,并且元素的数量还不是特别多,使用的是intset
hashtable哈希表
使用场景
1.使用set保存用户的标签
比如说:用户画像,根据用户的性格特征和喜好特点分析其喜好,然后投其所好
2.使用set确定用户的共同好友
QQ会推送一个共同的好友,让你来甄选添加
3使用set去统计UV
一个互联网产品,如何衡量用户量,其主要的指标就是PV和UV
PV:用户每次访问该服务器,每次访问都会产生一个PV
UV:每个用户访问该服务器都会产生一个UV,但是同一个用户多次进行访问,不会使UV增加,UV需要按照用户去进行去重,这样的去重过程,就是UV来进行实现的。
希望能对大家有所帮助!!!