Set
数学集合,元素自动过滤重复功能,不会保存元素添加顺序。丰富的数学集合操作,交集、并集,差集,尤其是判断是否包含 contains,非常高效。
1、基本操作(CURD)
>sadd key value[value ...]
将一个或多个 value元素加入到集合 key 当中,已经存在于集合的 value元素将被忽略。
>spop key
移除并返回集合中的一个随机元素。如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用 srandmember 命令。
>srem key value [ value...]
移除集合 key 中的一个或多个 value 元素,不存在的 value 元素会被忽略。
>scard key
返回集合 key 的基数(集合中元素的数量),scard 是数学上一个求集合个数的运算符号。
>smembers key
返回集合 key 中的所有成员。不存在的 key 被视为空集合,如果元素很多可能导致IO阻塞,最好使用的scan进行批量获取,而不是获取全部。
>srandmember key [count]
只提供了 key 参数,那么返回集合中的一个随机元素。
count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。
count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
>sismember key value
判断 value 元素是否集合 key 的成员,注意它的时间符合度是O(1),所以他比List的遍历比较元素是否相等要快很多,而且这是原子操作。
2、集合运算
>sdiff key [key ...]
返回所有给定集合的差集(存在第一个集合中但不存在其他任何一个集合中的成员)。不存在的 key 被视为空集。
>sdiffstore destination key [key ...]
返回所有给定集合的差集,同时将结果保存到 destination 集合,如果 destination 集合已经存在,则将其覆盖。
>sunion key [key ...]
返回所有给定集合的并集。不存在的 key 被视为空集。
>sunionstore destination key [key ...]
返回所有给定集合的并集,同时将结果保存到 destination 集合,如果 destination 集合已经存在,则将其覆盖。
>sinter key [key ...]
返回所有给定集合的交集。不存在的 key 被视为空集。当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
>sinterstore destination key [key ...]
返回所有给定集合的交集,同时将结果保存到 destination 集合,如果 destination 集合已经存在,则将其覆盖。
3、移动
>smove source destination value
原子性操作,将 value 元素从 source 集合移动到 destination 集合。
>sscan key cursor [MATCH pattern] [COUNT count]
根据游标的位置获取指定的数量的元素。