基本命令:

  1. 无序集合,集合成员是唯一的,这就意味着集合中不能出现重复的数据。<br />与Hash类型一致,但用 Field 存放数据, Value nil,通过 key 获取的是在key下所有的数据。类似 Java中的 HashSet。<br />![](https://cdn.nlark.com/yuque/0/2021/png/21405095/1620481060475-48126eb9-880a-4ff7-a60c-85bd2a806af4.png?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_20%2Ctext_6K-t6ZuALeWuh-i9qeiLseW7ug%3D%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10#crop=0&crop=0&crop=1&crop=1&from=url&height=210&id=dh4RE&margin=%5Bobject%20Object%5D&originHeight=419&originWidth=706&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=&width=353)<br />注:指令中的members实际就是value,这里改为value方便理解

添加数据:

  1. sadd key value1 value2 ...

获取数据:

  1. smembers key //获取key下所有的数据

删除数据:

  1. srem key value1 value2 ...

获取集合数据总量:

  1. scard key //返回当前key下的数据总量

判断是否包含某个数据:

  1. sismember key value //返回存在结果

拓展命令:

随机返回指定数量的数据:

  1. srandmember key count

随机返回指定数量的数据并移除:

  1. spop key count

两个集合的交集、并集、差集:

  1. sinter key1 key2 //返回交集
  2. sunion key1 key2 //返回并集
  3. sdiff key1 key2 //返回key1 - key2的差集

将两个集合的差集、交集、并集保存到新集合:

  1. sinterstore newkey key1 key2 //将交集保存到newKey
  2. sunionstore newkey key1 key2 //将并集保存到newKey
  3. sdiffstore newkey key1 key2 //将key1 - key2并集保存到newKey

将原集合的数据移动到其他集合:

  1. smove oldkey newkey value

使用案例:

随机推荐类信息检索:

例如歌单推荐、热点新闻推荐、APP应用推荐等可使用 srandmember 指令:

  1. sadd hotapplist douyu bilibili cctv alipay weixin zsblank zgblank //创建热点应用集合
  2. srandmember hotapplist 2 //随机抽取两个数据

显示共同信息:

显示共同信息:

  1. sadd people1:like psp psv ps4 switch ps3 ps5 //用户1的喜欢列表
  2. sadd people2:like psp psv phone computer ps1 //用户2的喜欢列表
  3. sinter people1:like people2:like //返回二者交集

通过用户A获取获取到好友B的某个数据:

  1. sadd friends xiaoming xiaoma xiaoyun //用户好友列表
  2. hmset loginuser:xiaoma like1 footboll like2 game like3 Java //设置好友数据
  3. hmget loginuser:xiaoma like1 like2 //获取好友数据

权限验证:

设置系统角色权限:

  1. sadd rid:01 getid getname getage
  2. sadd rid:02 getall getname getage
  3. sadd rid:03 getphone getaddress getprice
  4. sadd rid:04 getaddress getid
  5. sadd rid:05 getprice getwatch

赋予用户权限:

  1. sinterstore user:01 rid:01 rid:02 //将角色01和03的权限赋予用户01
  2. smembers user:01 //获取用户01的所有权限

注:实际的权限验证一般使用Shiro或者SpringSecurity实现。

访问量统计:

Set拥有去重机制,可用于网站 UV & IP 的访问次数统计 。