基本命令:
无序集合,集合成员是唯一的,这就意味着集合中不能出现重复的数据。<br />与Hash类型一致,但用 Field 存放数据, Value为 nil,通过 key 获取的是在key下所有的数据。类似 Java中的 HashSet。<br /><br />注:指令中的members实际就是value,这里改为value方便理解
添加数据:
sadd key value1 value2 ...
获取数据:
smembers key //获取key下所有的数据
删除数据:
srem key value1 value2 ...
获取集合数据总量:
scard key //返回当前key下的数据总量
判断是否包含某个数据:
sismember key value //返回存在结果
拓展命令:
随机返回指定数量的数据:
srandmember key count
随机返回指定数量的数据并移除:
spop key count
两个集合的交集、并集、差集:
sinter key1 key2 //返回交集
sunion key1 key2 //返回并集
sdiff key1 key2 //返回key1 - key2的差集
将两个集合的差集、交集、并集保存到新集合:
sinterstore newkey key1 key2 //将交集保存到newKey
sunionstore newkey key1 key2 //将并集保存到newKey
sdiffstore newkey key1 key2 //将key1 - key2并集保存到newKey
将原集合的数据移动到其他集合:
smove oldkey newkey value
使用案例:
随机推荐类信息检索:
例如歌单推荐、热点新闻推荐、APP应用推荐等可使用 srandmember 指令:
sadd hotapplist douyu bilibili cctv alipay weixin zsblank zgblank //创建热点应用集合
srandmember hotapplist 2 //随机抽取两个数据
显示共同信息:
显示共同信息:
sadd people1:like psp psv ps4 switch ps3 ps5 //用户1的喜欢列表
sadd people2:like psp psv phone computer ps1 //用户2的喜欢列表
sinter people1:like people2:like //返回二者交集
通过用户A获取获取到好友B的某个数据:
sadd friends xiaoming xiaoma xiaoyun //用户好友列表
hmset loginuser:xiaoma like1 footboll like2 game like3 Java //设置好友数据
hmget loginuser:xiaoma like1 like2 //获取好友数据
权限验证:
设置系统角色权限:
sadd rid:01 getid getname getage
sadd rid:02 getall getname getage
sadd rid:03 getphone getaddress getprice
sadd rid:04 getaddress getid
sadd rid:05 getprice getwatch
赋予用户权限:
sinterstore user:01 rid:01 rid:02 //将角色01和03的权限赋予用户01
smembers user:01 //获取用户01的所有权限
注:实际的权限验证一般使用Shiro或者SpringSecurity实现。
访问量统计:
Set拥有去重机制,可用于网站 UV & IP 的访问次数统计 。