redis集合相关命令

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"

你可能感兴趣的:(数据库,redis,nosql,redis,nosql,数据库)