您的位置:首页 > 数据库 > Redis

Redis数据库的安装和使用(五)-集合相关指令

2019-01-07 18:51 183 查看

Redis数据库部分命令

集合相关指令

关键字 用法 指令作用
sadd sadd key value [value…] 将一个或多个value添加到集合set中
scard scard key 返回集合set中元素的数量
sdiff sdiff key [key…] 返回给定第一个集合与后面所有集合的差集
sdiffstore sdiffstore set key [key…] 将给定第一个集合key与后面所有集合的差集返回并保存至集合set中
sinter sinter key [key…] 返回给定一个集合与后面所有集合的交集
sinterstore sinterstore set key [key…] 将给定第一个集合key与后面所有集合的交集返回并保存到集合set中
sismember sismember key value 判断并返回值value是否是集合key中的元素
smembers smembers key 返回集合中所有的元素
smove smove key set value 将集合key中的值为value的元素移至集合set中
spop spop key 从集合key中随机移除且返回一个元素
srandmember srandmember key [count] 按照count的数值进行返回集合key中的元素
srem srem key value [value…] 移除集合key中一个或多个指定元素
sunion sunion key [key…] 返回给定第一个集合与后面所有集合的并集
sunionstore sunionstore set key [key…] 将给定第一个集合key与后面所有集合的并集返回并保存到集合set中

sadd

语法:

sadd key value [value ...]

作用:

当集合key存在且有值时,直接将一个或value添加到key中;
当key不存在时,会先创建一个集合,并将一个或多个value值添加到key中;
当key是集合以外的类型时,会报错。

示例:

# 当key不存在时:
127.0.0.1:6379> sadd set1 a b c
(integer) 3

# 当集合key存在时:
127.0.0.1:6379> sadd set1 1 2 3
(integer) 3

# 当key不是集合类型时:
127.0.0.1:6379> set key1 1
OK
127.0.0.1:6379> sadd key1 a
(error) WRONGTYPE Operation against a key holding the wrong kind of value

scard

语法:

scard key

作用:

当集合key存在且有值时,返回set中元素的数量;
当key不存在但不是集合以外类型时,返回0;
当key是集合以外类型时,会报错。

示例:

# 当集合key存在且有值时:
127.0.0.1:6379> scard set1
(integer) 6

# 当key不存在但不是集合以外类型时:
127.0.0.1:6379> scard set2
(integer) 0

# 当key是集合以外类型时:
127.0.0.1:6379> scard key1
(error) WRONGTYPE Operation against a key holding the wrong kind of value

sdiff

语法:

sdiff key [key ...]

作用:

当集合key只有一个时,则是返回key中所有的元素;
当集合key存在且有值时,返回给定第一个集合与后面所有集合的差集;
当其中部分集合不存在或没有值时,会视为空集,不会对其他集合产生影响;
当其中有非集合以外类型时,会报错。

示例:

# 当集合key只有一个时:
127.0.0.1:6379> sdiff set1
1) "b"
2) "a"
127.0.0.1:6379> sdiff set2
1) "1"
2) "2"
3) "a"

# 当集合key存在且有值时:
127.0.0.1:6379> sdiff set2 set1
1) "1"
2) "2"
127.0.0.1:6379> sdiff set1 set2
1) "b"

# 当集合中有空集:
127.0.0.1:6379> sdiff set2 set1 set3
1) "1"
2) "2"

# 当其中有非集合的key时:
127.0.0.1:6379> sdiff set2 set1 key1
(error) WRONGTYPE Operation against a key holding the wrong kind of value

sdiffstore

语法:

sdiffstore set key [key ...]

作用:

该指令和sdiff指令作用类似,但是最终的返回值将保存至集合set中;
当集合set不存在时,会创建新的集合;
当集合set存在时,会覆盖集合之前的值;
其他的注意与sdiff一致。

示例:

# 当集合key只有一个时:
127.0.0.1:6379> sdiffstore sets set1
(integer) 2
127.0.0.1:6379> smembers sets
1) "b"
2) "a"

# 当集合key存在且有值时:
127.0.0.1:6379> sdiffstore sets set2 set1
(integer) 2
127.0.0.1:6379> smembers sets
1) "1"
2) "2"

sinter

语法:

sinter key [key ...]

作用:

当集合key存在且有值时,返回给定第一个集合以后面所有集合的交集;
当key为空且不为集合以外类型时,key视为空集合,结果也会变为空集;(与sdiff完全不一样的地方)
当key中有集合以外类型时,会报错。

示例:

# 当集合key存在且有值时:
127.0.0.1:6379> smembers set1
1) "b"
2) "a"
127.0.0.1:6379> smembers set2
1) "1"
2) "2"
3) "a"
127.0.0.1:6379> sinter set2 set1
1) "a"

# 当集合key只有一个且有值时:
127.0.0.1:6379> sinter set1
1) "b"
2) "a"

# 当集合key中有空集时:
127.0.0.1:6379> sinter set2 set1 set3
(empty list or set)

# 当key中有集合以外类型时:
127.0.0.1:6379> sinter set2 set1 key1
(error) WRONGTYPE Operation against a key holding the wrong kind of value

sinterstore

语法:

sinterstore set key [key ...]

作用:

该指令和sinter指令作用类似,但是最终的返回值将保存至集合set中;
当集合set不存在时,会创建新的集合并且存值;
当集合set存在且有值时,会覆盖之前的值;
其他的注意与sinter一致。

示例:

# 当集合key存在且有值时:
127.0.0.1:6379> sinterstore sets set2 set1
(integer) 1
127.0.0.1:6379> smembers sets
1) "a"

# 当集合key只有一个切有值时:
127.0.0.1:6379> sinterstore sets set2
(integer) 3
127.0.0.1:6379> smembers sets
1) "1"
2) "2"
3) "a"

sismember

语法:

sismember key value

作用:

判断值value是否是集合key中的元素,返回判断后的布尔值(0或1);
当key不存在且不是集合以外类型时,会返回0;
当key是集合以外类型时,会报错。

示例:

# 当集合key存在且有值时:
127.0.0.1:6379> smembers set2
1) "1"
2) "2"
3) "a"
127.0.0.1:6379> sismember set2 111
(integer) 0
127.0.0.1:6379> sismember set2 1
(integer) 1

# 当key没有值且不是集合以外类型时:
127.0.0.1:6379> sismember set3 1
(integer) 0

# 当key是集合以外类型时:
127.0.0.1:6379> sismember key1 1
(error) WRONGTYPE Operation against a key holding the wrong kind of value

smembers

语法:

smembers key

作用:

当集合key存在且有值时,返回集合key中所有的元素;
当key为空单不是集合以外类型时,返回空集;
当key是集合以外类型时,会报错。

示例:

# 当集合key存在且有值时:
127.0.0.1:6379> smembers set1
1) "b"
2) "a"

# 当key为空且不是集合以外类型时:
127.0.0.1:6379> smembers set3
(empty list or set)

# 当key为集合以外类型时:
127.0.0.1:6379> smembers key1
(error) WRONGTYPE Operation against a key holding the wrong kind of value

smove

语法:

smove key set value

作用:

当集合key存在且value为其中元素时:
如果集合set存在,直接将value移至集合set中;
如果set不存在,则会创建集合set,并将value移至set中;
如果集合key不存在或者value不在key中时,返回0,且不会对set进行操作;
如果key为集合以外类型时,会报错。

示例:

# 当key存在且value为其中元素时:
127.0.0.1:6379> smembers set1
1) "b"
2) "a"
127.0.0.1:6379> smembers sets
(empty list or set)
127.0.0.1:6379> smove set1 sets a
(integer) 1		# set不存在时
127.0.0.1:6379> smembers set1
1) "b"
127.0.0.1:6379> smembers sets
1) "a"

127.0.0.1:6379> smove set1 sets b
(integer) 1		# 集合set存在且有值时
127.0.0.1:6379> smembers set1
(empty list or set)
127.0.0.1:6379> smembers sets
1) "b"
2) "a"

# 当key不存在且不是集合以外类型时:
127.0.0.1:6379> smove set1 sets b
(integer)

# 当key为集合以外类型时:
127.0.0.1:6379> smove key1 sets a
(error) WRONGTYPE Operation against a key holding the wrong kind of value

spop

语法:

spop key

作用:

当集合key存在且有值时,会随机从集合key中移除且返回一个元素;
当key为空时,返回nil。

示例:

# 当集合key存在且有值时:
127.0.0.1:6379> smembers set1
1) "b"
2) "a"
127.0.0.1:6379> spop set1
"a"
127.0.0.1:6379> smembers set1
1) "b"

# 当key不存在时:
127.0.0.1:6379> smembers set1
(empty list or set)
127.0.0.1:6379> spop set1
(nil)

srandmember

语法:

srandmember key [count]

作用:

当集合key存在且有值时:
如果没有count值时,直接随机返回一个集合key中的元素;
如果给定count的值为正数时:
当count大于集合key中元素个数,则将整个集合key返回;
当count小于集合key中元素个数,则返回一个count个元素的数组,数组中的元素为集合key中的随机元素(不重复);
如果给定count的值为负数时:
不管count的绝对值大于还是小于集合key中元素的个数,都会返回一个元素个数为count的绝对值的数组,其中的每一个元素都是从集合key中随机出来的(可能会重复);
如果key不存在,则返回nil。

示例:

# 创建集合key,其中元素为a、b、c、1、2、3:
127.0.0.1:6379> sadd sets a b c 1 2 3
(integer) 6

# 当count为正数且小于key中元素个数时:
127.0.0.1:6379> srandmember sets 3
1) "c"
2) "b"
3) "3"

# 当count为正数且大于key中元素个数时:
127.0.0.1:6379> srandmember sets 7
1) "b"
2) "c"
3) "a"
4) "1"
5) "2"
6) "3"

# 当count为负数且绝对值小于key中元素个数时:
127.0.0.1:6379> srandmember sets -3
1) "c"
2) "a"
3) "a"			# 可能会有重复

# 当count为负数且绝对值大于key中元素个数时:
127.0.0.1:6379> srandmember sets -7
1) "2"
2) "3"
3) "a"
4) "b"
5) "a"
6) "2"
7) "b"			# 肯定会有重复

# 当key不存在时:
127.0.0.1:6379> srandmember set4
(nil)

srem

语法:

srem key value [value ...]

作用:

当集合key存在且有值时,按照后面给的value进行移除,如果value对应的值不在集合key中,则不会进行操作,最终返回真正移除的元素个数;
当key不存在且不是非集合类型时,直接返回0;
当key为非集合类型时,会报错。

示例:

# 当集合key存在且有值时:
127.0.0.1:6379> smembers sets
1) "1"
2) "b"
3) "c"
4) "a"
5) "2"
6) "3"
127.0.0.1:6379> srem sets 1 2 8
(integer) 2			# value中有对应的值不在key中
127.0.0.1:6379> smembers sets
1) "b"
2) "c"
3) "a"
4) "3"

# 当key不存在且不是非集合类型时:
127.0.0.1:6379> srem set5 1
(integer) 0

# 当key为非集合类型时:
127.0.0.1:6379> srem key1 1
(error) WRONGTYPE Operation against a key holding the wrong kind of value

sunion

语法:

sunion key [key ...]

作用:

当集合key都存在且有值时,返回第一个集合与后面所有集合的并集;
如果其中有的key不存在,则视为空集,不影响结果;

示例:

# 当集合key都存在且有值时:
127.0.0.1:6379> sunion set1 set2
1) "1"
2) "2"
3) "a"

# 当给定集合有不存在的时:
127.0.0.1:6379> sunion set1 set2 set111
1) "1"
2) "2"
3
20000
) "a"

sunionstore

语法:

sunionstore set key [key ...]

作用:

该指令与sunion指令作用相似,但是会将最终的结果保存到集合set中;
如果set不存在,则会先创建新的集合,再保存值;
如果集合set存在且有值,则会覆盖之前的值;

示例:

# 当集合key都存在且有值:
127.0.0.1:6379> sunionstore sets set1 set2
(integer) 3
127.0.0.1:6379> smembers sets
1) "1"
2) "2"
3) "a"
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: