redis 集合(Set)是字符串的无序排列,且没有重复的字符串;
redis 集合(Set)是基于哈希表实现的,所以添加、查询、删除操作非常快速,时间复杂度为O(1)常数级;
redis 集合(Set)可以存储40多亿个成员;
目录
加入集合
- sadd key member [member [...]] 把一个或多个成员加入集合 key 里;
- smove source destination member 把成员member从集合source移动到集合destination;
查询集合
- sismember key member 检查成员member是否在集合key里;
- smembers key 取得集合中的所有成员;
- scard key 取得集合中成员的数量;
- spop key [count] 移除并返回集合中的一个或多个随机成员;
- srandmember key [count] 取得集合中一个或多个随机成员;
删除成员
- srem key member [member [...]] 移除集合key中一个或多个成员;
差集
求出现在第一个集合中的元素
- sdiff key [key [...]] 返回所有给定集合的差集
- sdiffstore destination key [key [...]] 把所有给定集合的差集保存在集合 destination 里;
交集
求出现在所有给定集合中的元素
- sinter key [key [...]] 返回所有给定集合的交集
- sinterstore destination key [key [...]] 把所有给定集合的交集保存在集合 destination 里;
并集
把所有给定集合的元素集合在一起
- sunion key [key [...]] 返回所有给定集合的并集;
- sunionstore destination key [key [...]] 把所有给定集合的并集保存在 destination 里;
迭代
- sscan key cursor [MATCH pattern] [count] 迭代集合中的元素;
一些经典的应用场景
1. 用户的共同好友、共同关注等
使用集合来记录用户的好友,因为集合成员的唯一性,不会担心有重复的好友,使用集合交集计算很容易计算出多用户之间的共同好友。
2. 兴趣部落
建立一个兴趣部落,可以把兴趣部落里的用户保存为集合。
3. 扑克游戏
把扑克牌放入集合里,发牌时就使用spop命令操作。