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"