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) "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"