集合(set)类型也是用来保存多个的字符串元素,但和列表不同的是:它的元素是无序且不可重复的,不能通过索引获取元素.如下图,集合user:1:follows中包含着"his"、"it"、"sports"、"music"四个元素,一个集合最多可以存储(2的32次方-1)个元素.
1) 集合内操作
(1) 添加元素 sadd key value [value...] 返回结果为添加成功的元素数量.
(2) 删除元素 srem key value [value...] 返回结果为删除成功的元素数量.
(3) 获取元素个数 scard key
(4) 判断元素是否在集合中 sismember key value
(5) 随机从集合中返回指定个数元素 srandmember key [count] [count]是可选参数,如果不写默认为:1.
(6) 从集合中随机弹出元素 spop key spop操作可以从集合中随机弹出一个元素.
(7) 获取集合的所有元素 smembers key 获取集合所有元素,且返回结果是无序的.
2) 集合间操作
(1) 求多个集合的交集 sinter key [key...]
(2) 求多个集合的并集 sunion key [key...]
(3) 求多个集合的差集 sdiff key [key...]
(4) 将交集、并集、差集的结果保存.
sinterstore storeKey key [key...]
sunionstore storeKey key [key...]
sdiffstore storeKey key [key...]
集合间的运算在元素比较多的情况下会比较耗时,所以redis提供了上面三个命令(原命令+store)将集合间交集、并集、差集的结果保存到storeKey中,例如将user:1:follows和user:2:follows两个集合之间的交集结果保存到user:1_2:follows中.
参考资料:https://www.cnblogs.com/pirlo21/p/7120935.html
|