一些基本概念
- 集合(set)用来保存多个的字符串元素
- 不允许重复
- 元素是无序,不能通过索引下标获取元素
- 一个集合最多可以存储2的32次方-1个元 素。
- 支持多个集合取交集、并集、差集
常用命令
基本操作
- sadd key element [element ...] # 添加元素,返回结果为添加成功的元素个数
- srem key element [element ...] # 删除元素,返回结果为删除成功的元素个数
- scard key # 计算元素个数,
- sismember key element # 判定元素是否在集合中,如果给定元素element在集合内返回1,反之返回0
- srandmember key [count] # 随机从集合返回指定个数元素,count为可选参数,如果不写,默认为1
- spop key # 从集合随机弹出元素,
- smembers key # 获取所有元素
注意
smembers和lrange、hgetall都属于比较重的命令,如果元素过多存在阻 塞Redis的可能性,这时候可以使用sscan来完成
集合间操作
- 求多个集合的交集:sinter key [key ...]
- 求多个集合的并集:suinon key [key ...]
- 求多个集合的差集:sdiff key [key ...]
- 将交集、并集、差集的结果保存
sinterstore destination key [key ...]
suionstore destination key [key ...]
sdiffstore destination key [key ...]
说明:
集合间的运算在元素较多的情况下会比较耗时,所以Redis提供了上面 三个命令(原命令+store)将集合间交集、并集、差集的结果保存在 destination key中
应用场景
应用核心思想:set集合,不允许重复,元素是无序
- 网站访问的黑名单、白名单
- 访问的UV,IP (PV可以使用String的自增实现)
- 用户tag