一.Set 类型
1.基本介绍
set不同含义:①集合(本文所指) ②设置(与get对应)
集合就是把一些有关联的数据放到一起:
集合的特点:
①: 集合中的元素是无序的
②: 集合中的元素是不能重复的(唯一的)
注:和list类似,集合中的每一个元素也都是String类型(可用json格式让String拥有存储"结构化"数据的功能)
2.Set常见命令:
①sadd命令: 往集合中添加元素
语法: sadd key number [number...] --->返回成功添加的元素个数
例: sadd key 1 2 3 4 -->返回4
sadd key 1 1 2 3 4 -->返回4 (集合中的元素是不能重复的(唯一的))
②: smembers 命令: 查询key内容
语法:smembers key --->返回key中所有元素
③: sismember 命令: 查询某个元素是否存在
语法: sismember key number --->返回值: 存在返回1,不存在返回0
④: spop 命令: 随机删除集合中的一个/多个元素(又查又删)
语法: spop key [count] --->返回被删除的元素
⑤: srandmember命令: 随机取集合的一个元素(只查不删)
语法: srandmember key -->返回取出的元素
⑥: smove 命令: 将元素移动到另一个集合
语法: smove source destination member --->返回值:1成功,0失败
(本质:从source集合上删除元素,再将这个元素插入destination)
⑦: srem 命令: 将指定的元素从set中删除
语法: srem key member [member...] -->返回成功删除的元素个数
⑧:集合间操作:交集,并集,差集
介绍差集: A=1, 2, 3, 4 B=3, 4, 5, 6 --->A-B=1, 2(结果是在A中存在,在B中不存在)
<1> sinter 命令:求交集(版本一)
语法: sinter key [key...] -->返回求得的交集内容
<2> sinterstore 命令: 把算好的交集放到destination 这个key对应的集合中(版本二)
语法: sinterstore destination key [key...] --->返回交集的元素个数
<3> sunion 命令: 求并集(版本一)
语法: sunion key [key...] -->返回求得的并集内容
<4> sunionstore 命令:将所求并集存放到destination这个key对应的集合中
语法: sunionstore destination key [key...] --->返回所求并集元素个数
<5> sdiff 命令: 求差集
语法: sdiff key [key...] --->返回差集内容(第一个集合里有、别的集合里没有的元素)
<6> sdiffstore 命令 :将所求差集存放到destination这个key对应的集合中
语法: sdiffstore destination key [key...] -->返回差集元素个数
<7> scard 命令: 获取集合元素的数量
语法:scard key --->返回个数
3,Set内部编码
1) intset(整数集合),元素必须为整数
2) hashtable(哈希表)
4.Set应用场景
①: 使用Set来保存用户的"标签" --->例如:抖音每个用户的偏好
②: 用Set来计算用户间的共同好友
③: 用Set统计UV(基于Set去重能力实现) 注:衡量用户规模用:1.PV 2.UV