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

Redis数据库部分命令

集合相关指令

关键字用法指令作用
saddsadd key value [value…]将一个或多个value添加到集合set中
scardscard key返回集合set中元素的数量
sdiffsdiff key [key…]返回给定第一个集合与后面所有集合的差集
sdiffstoresdiffstore set key [key…]将给定第一个集合key与后面所有集合的差集返回并保存至集合set中
sintersinter key [key…]返回给定一个集合与后面所有集合的交集
sinterstoresinterstore set key [key…]将给定第一个集合key与后面所有集合的交集返回并保存到集合set中
sismembersismember key value判断并返回值value是否是集合key中的元素
smemberssmembers key返回集合中所有的元素
smovesmove key set value将集合key中的值为value的元素移至集合set中
spopspop key从集合key中随机移除且返回一个元素
srandmembersrandmember key [count]按照count的数值进行返回集合key中的元素
sremsrem key value [value…]移除集合key中一个或多个指定元素
sunionsunion key [key…]返回给定第一个集合与后面所有集合的并集
sunionstoresunionstore 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) "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"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值