Redis中文官网命令大全

set常用命令汇总

命令

语法

语义

sadd

sadd key member [member …]

添加若干指定元素member到key集合中,并返回成功添加元素个数

spop

spop key [count]

与srandmember相似,随机移除并返回集合key中若干随机元素

srem

srem key member [member … ]

在集合key中移除指定元素,并返回成功移除元素个数

scard

scard key

返回指定集合key中的元素数

sismember

sismember key member

返回集合key中是否存在指定元素member

smembers

smembers key

返回集合key的所有元素

srandmember

srandmember key [count]

随机返回集合key中的一个元素,或随机返回集合key中的count的元素

smove

smove source destination member

将指定元素member从集合source中移动到集合destination中

sinter

sinter key [key …]

返回所有指定集合中元素的交集

sinterstore

sinterstore destination key [key …]

返回所有指定集合中元素的交集,并将结果保存在集合destination中

sunion

sunion key [key …]

返回所有指定集合中元素的并集

sunionstore

sunionstore destination key [key …]

返回所有指定集合中元素的并集,并将结果保存在集合destination中

sdiff

sdiff key [key …]

返回一个集合与其余指定集合的差集

sdiffstore

sdiffstore destination key [key …]

返回一个集合与其余指定集合的差集,并将结果保存在集合destination中

命令演示

增加操作

sadd

使用sadd命令想集合key中添加若干指定member元素,返回成功添加到集合key中的元素数量。

如果集合key不存在,则先新建集合key,再将若干member元素添加到集合key中。

如果指定将要添加的某元素member已经存在与集合key中,则忽略该元素的添加。

127.0.0.1:6379> sadd myset v1 v2 v3
(integer) 3
127.0.0.1:6379> sadd myset v3 v4 v5
(integer) 2
127.0.0.1:6379> smembers myset
1) "v4"
2) "v3"
3) "v2"
4) "v1"
5) "v5"

删除操作

spop

使用spop命令从指定集合key中随机移除并返回若干元素,若指定集合key或集合key中没有元素,则返回空。

如果只提供了参数key,则从集合key中随机移除并返回一个元素。

如果提供了参数count,count为正整数时,则从集合key中随机移除并返回count个元素,若干count值大于等于集合key的总元素个数,则将集合key中全部元素移除并返回。

127.0.0.1:6379> smembers myset
1) "v4"
2) "v2"
3) "v3"
4) "v1"
5) "v5"
127.0.0.1:6379> smembers neset
(empty list or set)
127.0.0.1:6379> spop myset
"v5"
127.0.0.1:6379> spop myset 2
1) "v3"
2) "v4"
127.0.0.1:6379> spop myset 5
1) "v1"
2) "v2"
127.0.0.1:6379> spop myset 5
(empty list or set)

srem

使用srem从集合key中移除指定的元素,如果集合key中不存在某个指定元素member则忽略,移除后返回成功移除的元素个数,集合key不存在或集合key为空时返回0

127.0.0.1:6379> smembers myset
1) "v3"
2) "v2"
3) "v1"
127.0.0.1:6379> srem neset v1
(integer) 0
127.0.0.1:6379> srem myset v4 v5
(integer) 0
127.0.0.1:6379> srem myset v1 v3 v5
(integer) 2

查找操作

scard

使用scard命令获取指定集合key中的元素数,如果集合key不存在,则返回0

127.0.0.1:6379> sadd myset v1 v2
(integer) 2
127.0.0.1:6379> scard myset
(integer) 2
127.0.0.1:6379> scard neset
(integer) 0

sismember

使用sismember判断集合key中是否存在元素member。

如果集合key中存在元素member,则返回1。

如果集合key中不存在元素member,或者集合key不存在,则返回0。

127.0.0.1:6379> sadd myset v1 v2
(integer) 2
127.0.0.1:6379> sismember myset v3
(integer) 0
127.0.0.1:6379> sismember neset v2
(integer) 0
127.0.0.1:6379> sismember myset v2
(integer) 1

smembers

使用smembers命令返回指定集合key中的所有元素,如果集合key不存在,返回空。

127.0.0.1:6379> sadd myset v1 v2
(integer) 2
127.0.0.1:6379> smembers myset
1) "v2"
2) "v1"

srandmember

使用srandmember命令返回集合key中若干随机元素。

若仅提供参数key,则随机返回集合key中的一个元素,若key不存在返回空。

若提供了参数count,则有如下四种情况:

  • count为0,则返回空。
  • 若count为正整数,且count小于集合key中元素数,则随机返回集合key中count个不重复的元素。
  • 若count为正整数,且count大于等于集合key中元素数,则返回集合中的全部元素。
  • 若count为负整数,则随机返回集合key中count的绝对值个可能出现重复的元素。
127.0.0.1:6379> smembers myset
1) "v4"
2) "v3"
3) "v2"
4) "v1"
127.0.0.1:6379> srandmember myset 0
(empty list or set)
127.0.0.1:6379> srandmember myset 2
1) "v1"
2) "v4"
127.0.0.1:6379> srandmember myset 2
1) "v2"
2) "v4"
127.0.0.1:6379> srandmember myset 6
1) "v1"
2) "v2"
3) "v3"
4) "v4"
127.0.0.1:6379> srandmember myset -5
1) "v3"
2) "v1"
3) "v2"
4) "v4"
5) "v3"
127.0.0.1:6379> srandmember myset -3
1) "v1"
2) "v4"
3) "v4"

多集合操作

smove

使用smove命令将指定元素member从集合source移动到集合destination中。

如果集合source存在且集合内存在指定元素member,且集合destination中没有元素member,则将元素member从集合source中移除,并且添加到集合destination中,结果返回1。

如果集合source不存在或集合内不存在指定元素member,则不执行任何操作并返回0。

如果集合source存在且集合内存在指定元素member,但集合destination中已经存在元素member,则仅将元素member从source移除,结果返回1。

127.0.0.1:6379> sadd set1 v1 v2
(integer) 2
127.0.0.1:6379> sadd set2 v2
(integer) 1
127.0.0.1:6379> smove set3 set4 v1
(integer) 0
127.0.0.1:6379> smove set1 set2 v1
(integer) 1
127.0.0.1:6379> smove set1 set2 v2
(integer) 1
127.0.0.1:6379> smembers set1
(empty list or set)
127.0.0.1:6379> smembers set2
1) "v1"
2) "v2"

交集

sinter

使用sinter命令返回所有指定集合中元素的交集,指定集合数量可以大于2。当任一指定集合为空或不存在时,返回空。

127.0.0.1:6379> sadd set1 v1 v2 v3
(integer) 3
127.0.0.1:6379> sadd set2 v2 v3 v4
(integer) 3
127.0.0.1:6379> sinter set1 set2
1) "v3"
2) "v2"
127.0.0.1:6379> sinter set1 set2 set3
(empty list or set)

sinterstore

使用sinterstore命令获取所有指定集合中元素的交集,规则与sinter相同,只是并不直接返回交集,而是将该交集保存在集合destination中,如果集合destination存在,则重写集合destination。

127.0.0.1:6379> sadd set1 v1 v2 v3
(integer) 3
127.0.0.1:6379> sadd set2 v2 v3 v4
(integer) 3
127.0.0.1:6379> sadd set3 v5
(integer) 1
127.0.0.1:6379> sinterstore set3 set1 set2
(integer) 2
127.0.0.1:6379> smembers set3
1) "v2"
2) "v3"

并集

sunion

使用sunion命令返回所有指定集合中元素的并集,不存在的集合key被视为空集。

127.0.0.1:6379> sadd set1 v1 v2 v3
(integer) 3
127.0.0.1:6379> sadd set2 v2 v3 v4
(integer) 3
127.0.0.1:6379> sunion set1 set2 set3
1) "v3"
2) "v2"
3) "v4"
4) "v1"

sunionstore

使用sunionstore命令返回所有指定集合中元素的并集,规则与suinon相同,只是并不直接返回并集,而是将该并集保存在集合destination中,如果集合destination存在,则重写集合destination。

127.0.0.1:6379> sadd set1 v1 v2 v3
(integer) 3
127.0.0.1:6379> sadd set2 v2 v3 v4
(integer) 3
127.0.0.1:6379> sadd set3 v5
(integer) 1
127.0.0.1:6379> sunionstore set3 set1 set2
(integer) 4
127.0.0.1:6379> smembers set3
1) "v3"
2) "v2"
3) "v4"
4) "v1"

差集

sdiff

使用sdiff命令返回第一个参数集合与其余集合的差集,不存在的集合key被视为空集。

127.0.0.1:6379> sadd set1 v1 v2 v3
(integer) 3
127.0.0.1:6379> sadd set2 v2 v3 v4
(integer) 3
127.0.0.1:6379> sdiff set1 set2
1) "v1"

sdiffstore

使用sdiffstore命令返回第一个参数集合与其余集合的差集,规则与sdiff相同,只是并不直接返回差集,而是将该差集保存在集合destination中,如果集合destination存在,则重写集合destination。

127.0.0.1:6379> sadd set1 v1 v2 v3
(integer) 3
127.0.0.1:6379> sadd set2 v2 v3 v4
(integer) 3
127.0.0.1:6379> sadd set3 v5
(integer) 1
127.0.0.1:6379> sdiffstore set3 set1 set2
(integer) 1
127.0.0.1:6379> smembers set3
1) "v1"