set
集合的特点是元素是无序、不重复,支持集合间的操作(即两个集合取交集、并集、差集);
命令:
注意集合的命令是以 s- 为前缀;
交集、并集和差集分别对应方法: sinter, sunion, sdiff。
sadd key element | 向集合Key添加element,若存在则失败 |
---|---|
srem key element | 将集合key中的element移除掉 |
scard key | 计算集合大小,也就是element的数量 |
sismenber key element | 判断element是否在集合中 |
srandmember key count | 在集合中随机挑count个元素,该方法对比spop不会破坏集合。 |
spop key | 从集合中随机弹出一个元素 |
smembers key | 获取集合所有元素。返回结果无序,如果member多,注意阻塞 |
sinter/sunion/sdiff + store destkey | 将差集、交集和并集结果保存在destkey中 |
sinter/sunion/sdiff key1 key2 |
实战场景:
微博转发抽奖平台,can be spop
点赞 踩
标签tag 给用户添加标签: sadd user:1:tags tag1 tag2 给标签添加用户:略 可以将这两个操作放在同一个事务内。
共同关注
TIPS
sadd = Tagging
spop/srandmember = random item
sadd + sinter = social graph 社交相关应用
应用场景:
Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。
Sets 集合的概念就是一堆不重复值的组合。利用Redis提供的Sets数据结构,可以存储一些集合性的数据,比如在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。Redis还为集合提供了求交集、并集、差集等操作,可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。