redis集合,用来保存多个字符串元素。元素无序且不可重复。不能通过索引获取元素。
1、sadd命令-向集合添加一个或多个成员
redis的sadd命令将一个或多个成员元素加入到集合中,已经存在于集合的元素将被忽略。
如果集合key不存在,则创建一个包含添加元素作成员的集合。
当集合key不是集合类型时,返回一个错误。
注意:在redis2.4版本以前,sadd只接受单个成员。
语法:
sadd keyname value1 ... valuen
版本:1.0.0及以上
返回值:被添加到集合中的新元素的数量,不包括被忽略的元素。
eg:
127.0.0.1:6379> sadd myset "hello" "hello"
(integer) 1
127.0.0.1:6379> sadd list "abc"
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> sadd myset "abc" "123"
(integer) 2
127.0.0.1:6379>
2、scard命令-获取集合的成员数
redis中scard命令返回集合中元素的数量。
语法:
scard keyname
版本:1.0.0及以上
返回值:集合元素的数量。当集合key不存在时,返回0
eg:
127.0.0.1:6379> scard myset
(integer) 5
127.0.0.1:6379> sadd myset "1qaz@WS"
(integer) 1
127.0.0.1:6379> scard myset
(integer) 6
127.0.0.1:6379> scard bbb
(integer) 0
127.0.0.1:6379> scard list
(error) WRONGTYPE Operation against a key holding the wrong kind of value
3、sdiff命令-返回给定所有集合的差集
redis中sdiff命令返回给定集合之间的差集。不存在的集合key将视为空集。
语法:
sdiff keyname1 ... keynamen
版本:1.0.0
返回值:包含差集成员的列表
eg:
127.0.0.1:6379> sadd set1 "1"
(integer) 1
127.0.0.1:6379> sadd set1 "2" "3"
(integer) 2
127.0.0.1:6379> sadd set2 "3"
(integer) 1
127.0.0.1:6379> sdiff set1 set2
1) "1"
2) "2"
127.0.0.1:6379> sadd set2 "4"
(integer) 1
127.0.0.1:6379> sdiff set1 set2
1) "1"
2) "2"
127.0.0.1:6379> sdiff set2 sit1
1) "3"
2) "4"
127.0.0.1:6379>
4、sdiffstore命令-返回给定所有集合的差集并存储在第一个key中
redis中sdiffstore命令将给定集合之间的差集存储在指定的集合中。如果指定的集合key已经存在,则会被覆盖。
语法:
sdiffstore destinationkey key1 ... keyn
版本:1.0.0及以上
返回值:结果集中元素的数量。
eg:
redis 127.0.0.1:6379> SADD myset "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset "foo"
(integer) 1
redis 127.0.0.1:6379> SADD myset "bar"
(integer) 1
redis 127.0.0.1:6379> SADD myset2 "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset2 "world"
(integer) 1
redis 127.0.0.1:6379> SDIFFSTORE destset myset myset2
(integer) 2
redis 127.0.0.1:6379> SMEMBERS destset
1) "foo"
2) "bar"
5、sinter命令-返回给定所有集合的交集
redis中sinter命令返回给定所有给定集合的交集。不存在的集合key被视为空集。当给定集合当中有一个是空集,结果也是空集。
语法:
sinter key1 ... keyn
版本:1.0.0及以上
返回值:交集成员的列表
eg:
redis 127.0.0.1:6379> SADD myset "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset "foo"
(integer) 1
redis 127.0.0.1:6379> SADD myset "bar"
(integer) 1
redis 127.0.0.1:6379> SADD myset2 "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset2 "world"
(integer) 1
redis 127.0.0.1:6379> SINTER myset myset2
1) "hello"
6、sinterstore命令-返回给定所有集合的交集,并存储到指定key
redis中sinterstore命令将给定集合之间的交集存储在指定的集合中。如果指定的集合已经存在,则将其覆盖。
语法
sinterstore destinationkey key1 ... keyn
版本:1.0.0及以上
返回值:交集成员的列表。
eg:
redis 127.0.0.1:6379> SADD myset1 "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "foo"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "bar"
(integer) 1
redis 127.0.0.1:6379> SADD myset2 "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset2 "world"
(integer) 1
redis 127.0.0.1:6379> SINTERSTORE myset myset1 myset2
(integer) 1
redis 127.0.0.1:6379> SMEMBERS myset
1) "hello"
7、sismember命令-判断member元素是否是集合key的成员
redis中sismember命令判断成员元素是否是集合的成员。
语法
sismember key value
版本:1.0.0
返回值:如果成员元素是集合的成员,返回1。如果成员元素不是集合的成员,或key不存在,返回0。
eg
redis 127.0.0.1:6379> SADD myset1 "hello"
(integer) 1
redis 127.0.0.1:6379> SISMEMBER myset1 "hello"
(integer) 1
redis 127.0.0.1:6379> SISMEMBER myset1 "world"
(integer) 0
8、smembers命令-返回集合中的所有成员
redis中smembers命令返回集合中的所有成员。不存在的集合key被视为空集合。
语法:
smembers key
版本:1.0.0及以上
返回值:集合中的所有成员。
eg
redis 127.0.0.1:6379> SADD myset1 "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "world"
(integer) 1
redis 127.0.0.1:6379> SMEMBERS myset1
1) "World"
2) "Hello"
9、smove命令-将集合中的元素从一个集合移到另外一个集合中。
redis中smove命令将制定成员member元素从source集合移动到destination集合中。
smove是原子性操作。如果source集合不存在或不包含指定的member元素,则smove命令不执行任何操作,仅返回0。否则,member元素从集合中被移除,并添加到destination集合中去。
当destination集合已经包含member元素时,smove命令只是简单的将source集合中的member元素删除。
当source或destination不是集合类型时,返回一个错误。
语法:
smove sorce des key
版本:1.0.0及以上
返回值:如果成员元素被成功移除,返回1。如果成员元素不是source集合的元素,不做任何操作。返回0
eg
redis 127.0.0.1:6379> SADD myset1 "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "world"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "bar"
(integer) 1
redis 127.0.0.1:6379> SADD myset2 "foo"
(integer) 1
redis 127.0.0.1:6379> SMOVE myset1 myset2 "bar"
(integer) 1
redis 127.0.0.1:6379> SMEMBERS myset1
1) "World"
2) "Hello"
redis 127.0.0.1:6379> SMEMBERS myset2
1) "foo"
2) "bar"
10、spop命令-移除并返回集合中的一个随机元素。
redis中spop命令用于移除并返回集合中的一个随机元素。
语法:
spop key
版本:1.0.0
返回值:被移除的随机元素。当集合不存在或是空集时,返回nil
eg
redis 127.0.0.1:6379> SADD myset1 "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "world"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "bar"
(integer) 1
redis 127.0.0.1:6379> SPOP myset1
"bar"
redis 127.0.0.1:6379> SMEMBERS myset1
1) "Hello"
2) "world"
11、srandmember命令-返回集合中一个或多个随机数
redis中srandmember命令用于返回集合中的一个随机元素。
从redis2.6版本开始,srandmember命令接受可选的count参数:
如果count为正数,且小于集合基数,那么命令返回一个包含count个元素的数组,数组中的元素个不相同。如果count大于基数,你们返回整个集合。
如果count为负数,那么命令返回一个数组,数组的元素可能还会重复出现多次,而数组的长度为count的绝对值。
该操作和spop类似,但是不删除元素。
语法
srandmember key [count]
版本:1.0.0
返回值:值提供集合key参数时,返回一个元素;如果集合为空,返回nil。如果提供了count参数,那么返回一个数组;如果集合为空,返回一个空数组。
eg
redis 127.0.0.1:6379> SADD myset1 "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "world"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "bar"
(integer) 1
redis 127.0.0.1:6379> SRANDMEMBER myset1
"bar"
redis 127.0.0.1:6379> SRANDMEMBER myset1 2
1) "Hello"
2) "world"
11、srem命令-移除集合中一个或多个成员
redis中srem命令用于移除一个或多个成员元素,不存在的成员元素会被忽略。
当key不是集合类型,返回一个错误。
在redis2.4版本以前,srem只接受单个成员值。
语法
srem key value1 [.. valuen]
版本:1.0.0及以上
返回值:被成功移除的元素的数量,不包括被忽略的元素。
eg
redis 127.0.0.1:6379> SADD myset1 "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "world"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "bar"
(integer) 1
redis 127.0.0.1:6379> SREM myset1 "hello"
(integer) 1
redis 127.0.0.1:6379> SREM myset1 "foo"
(integer) 0
redis 127.0.0.1:6379> SMEMBERS myset1
1) "bar"
2) "world"
12、sunion命令-返回所有给定集合的并集
redis中sunion命令用于返回给定集合的并集。不存在的集合key被视为空集。
语法
sunion key1 ... keyn
版本:1.0.0及以上
返回值:并集成员的列表
eg
redis 127.0.0.1:6379> SADD myset1 "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "world"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "bar"
(integer) 1
redis 127.0.0.1:6379> SADD myset2 "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset2 "bar"
(integer) 1
redis 127.0.0.1:6379> SUNION myset1 myset2
1) "bar"
2) "world"
3) "hello"
4) "foo"
13、sunionstore命令-返回所有给定集合的并集并存储到指定集合中
redis中sunionstore命令将给定集合的并集存储在指定的集合中。
语法
sunionstore destination key1 ... keyn
版本:1.0.0及以上
返回值:成功1
eg
redis 127.0.0.1:6379> SADD myset1 "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "world"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "bar"
(integer) 1
redis 127.0.0.1:6379> SADD myset2 "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset2 "bar"
(integer) 1
redis 127.0.0.1:6379> SUNIONSTORE myset myset1 myset2
(integer) 1
redis 127.0.0.1:6379> SMEMBERS myset
1) "bar"
2) "world"
3) "hello"
4) "foo"
14、sscan命令-迭代集合中的元素。
redis中sscan命令用于迭代集合键中的元素。
语法:
sscan key [match pattern] [count]
版本:1.0.0
返回值:数字列表
eg
redis 127.0.0.1:6379> SADD myset1 "hello"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "hi"
(integer) 1
redis 127.0.0.1:6379> SADD myset1 "bar"
(integer) 1
redis 127.0.0.1:6379> sscan myset1 0 match h*
1) "0"
2) 1) "hello"
2) "h1"