数据类型 set
一、介绍
存储一些元素的集合。
与 list 区别:set 元素无序,元素无法重复
和 list 一样只能存 string,但是可以存 JSON 实现存储结构化数据
二、常见命令
1、sadd key member [member ...]
添加指定集合中元素
2、smembers key
获取指定集合中所有 member
3、sismember key member
判定 member 是否在 key 这个集合中
4、scard key
获取集合中元素个数
5、spop key [count]
随机删除集合中一个或 count 个元素
6、srandmember key [count]
随机获取集合中一个或 count 个元素
7、smove src dst member
把 src 中的 member 移到 dst
如果两个集合中都有1,移动之后 src 没有1,dst 也只有一个1,命令操作严格执行先删除再添加
8、srem key member [member ...]
删除集合中 member
9、集合间操作
(1)交集 inter
sinter key [key ...]
求若干集合的交集,返回交集里面的所有元素
sinterstore dst key [key ...]
求若干集合的交集,最后形成交集 dst
(2)并集 union
sunion key [key ...]
求若干集合的并集,返回并集里面的所有元素
sunionstore dst key [key ...]
求若干集合的并集,最后形成并集 dst
(3)差集 diff
sdiff key [key ...]
求若干集合的差集,返回差集里面的所有元素
sdiffstore dst key [key ...]
求若干集合的差集,最后形成差集 dst
三、内部编码
intset: 整数集合,当所有元素都是整数并且数量少的时候才会使用
hashtable: 其余全用哈希表
四、应用场景
1、用 set 存储用户标签
2、计算用户间共同好友
3、用 set 统计 UV:user view 每一个用户访问服务器会产生一次 UV,但是同一个用户访问多次服务器因为只会有一次 UV,用于去重
另外还有 PV:page view 用户每次访问服务器都会记录一次,二者使用来展示网站的访问量