简介
- 集合以无序的方式存储多个各不相同的元素
- 可以快速地向集合添加元素,或者从集合里面删除元素,也可以对多个集合进行集合运算操作:并集、交集和差集
- 相当于Java中的Set
不要使用集合来储存有序的数据。如果想要储存有序且重复的值,可以使用列表;如果想要储存有序且无重复的值,可以使用有序集合
元素操作
-
SADD key element [element ...] 将一个或多个元素添加到给定的集合里面,已经存在于集合的元素会自动被忽略,命令返回新添加到集合的元素数量
127.0.0.1:6379> sadd set hi hello haha hehe (integer) 4 127.0.0.1:6379> sadd set hi (integer) 0
-
SREM key element [element ...] 移除集合中的一个或者多个元素,不存在于集合中的元素会自动被忽略,命令返回存在并且被移除的元素数量
127.0.0.1:6379> srem set hi hello world (integer) 2
-
SISMEMBER key element 检查给定的元素是否存在于集合,存在的话返回 1 如果元素不存在,或者给定的键不存在,那么返回 0
127.0.0.1:6379> sismember set hello (integer) 0 127.0.0.1:6379> sismember set hehe (integer) 1
-
SCARD key 返回集合包含的元素数量
127.0.0.1:6379> scard set (integer) 2
-
SMEMBERS key 返回集合包含的所有元素
127.0.0.1:6379> smembers set 1) "haha" 2) "hehe"
当集合的基数比较大时,执行这个命令可能会造成服务器阻塞 对于同一相同的集合元素,同一个集合命令可能会返回不同的结果:集合的无序性
-
SPOP key 随机地从集合中移除并返回一个元素
127.0.0.1:6379> spop set "haha" 127.0.0.1:6379> spop set "hehe" 127.0.0.1:6379> spop set (nil)
-
SRANDMEMBER key [count] 从集合里面随机地返回元素 如果没有给定可选的 count 参数,那么命令随机地返回集合中的一个元素 如果给定了 count 参数,那么: • 当 count 为正数,并且少于集合基数时,命令返回一个包含 count 个元素的数组,数组中的每个元素各不相同。如果 count 大于或等于集合基数,那么命令返回整个集合 • 当 count 为负数时,命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为count 的绝对值
和SPOP不同,SRANDMEMBER不会移除被返回的元素
127.0.0.1:6379> srandmember set "world" 127.0.0.1:6379> srandmember set 10 1) "hello" 2) "hi" 3) "haha" 4) "world" 5) "hehe" 127.0.0.1:6379> srandmember set -10 1) "world" 2) "hello" 3) "hello" 4) "hehe" 5) "hello" 6) "world" 7) "world" 8) "world" 9) "hi" 10) "hi"
集合运算操作
-
SDIFF key [key ...] 计算所有给定集合的差集,并返回结果
127.0.0.1:6379> sadd num1 123 456 666 (integer) 3 127.0.0.1:6379> 127.0.0.1:6379> sadd num2 123 456 777 888 (integer) 4 127.0.0.1:6379> sdiff num1 num2 1) "666" 127.0.0.1:6379> sdiff num2 num1 1) "777" 2) "888"
-
SDIFFSTORE destkey key [key ...] 计算所有给定集合的差集,并将结果储存到 destkey
127.0.0.1:6379> sdiffstore num3 num2 num1 (integer) 2 127.0.0.1:6379> smembers num3 1) "777" 2) "888"
-
SINTER key [key ...] 计算所有给定集合的交集,并返回结果
127.0.0.1:6379> sinter num1 num2 1) "123" 2) "456" 127.0.0.1:6379> sinter num2 num1 1) "123" 2) "456"
-
SINTERSTORE destkey key [key ...] 计算所有给定集合的交集,并将结果储存到destkey
127.0.0.1:6379> sinterstore num4 num1 num2 (integer) 2 127.0.0.1:6379> smembers num4 1) "123" 2) "456"
-
SUNION key [key ...] 计算所有给定集合的并集,并返回结果
127.0.0.1:6379> sunion num1 num2 1) "123" 2) "456" 3) "666" 4) "777" 5) "888" 127.0.0.1:6379> sunion num2 num1 1) "123" 2) "456" 3) "666" 4) "777" 5) "888"
-
SUNIONSTORE destkey key [key ...] 计算所有给定集合的并集,并将结果储存到destkey
127.0.0.1:6379> sunionstore num5 num2 num1 (integer) 5 127.0.0.1:6379> smembers num5 1) "123" 2) "456" 3) "666" 4) "777" 5) "888"