Redis 集合处理
学习了列表之后,发现了Redis处理字符串的功能强大。为了适应不同场景的需求,还有一个用的很多的就是集合。
Redis提供的集合支持的类型是字符串。并且集合中的元素值是唯一的,也就是说不能出现重复数据。
而且,集合的实现是通过哈希的方式,在修改集合的时候复杂度都为O(1)。
Redis支持集合的最大数量为2^32 - 1个。
1、SADD 命令
用于将一个或多个元素加入到指定的集合中,由于集合不存在重复元素,所以已经存在的成员会被忽略。
如果指定的集合不存在,则该命令会创建该集合,并且把元素加入进去。
如果指定的KEY不是一个集合,则返回一个错误说明。
127.0.0.1:6379> SADD KEY MEMBER
例如,
127.0.0.1:6379> SET SET A
OK
127.0.0.1:6379> SADD SET 1 2 3 4 5
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> SADD SET1 1 2 3 4 5
(integer)
5
127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
2、SCARD 命令
用于返回指定集合中元素的数量。
127.0.0.1:6379> SCARD KEY
例如,
127.0.0.1:6379> SCARD SET1
(integer)
5
3、SDIFF 命令
用于返回给定集合之间的差集。
一定是前面的集合减去后面的集合,剩余的元素。
127.0.0.1:6379> SDIFF KEY KEY
例如,
127.0.0.1:6379> sadd SET 1 2 3 4 5
(integer)
5
127.0.0.1:6379> sadd SET1 1 2 3
(integer) 3
127.0.0.1:6379> sdiff SET1 SET
(empty list or set)
127.0.0.1:6379> sdiff SET SET
(empty list or set)
127.0.0.1:6379> sdiff SET SET1
1) "4"
2) "5"
127.0.0.1:6379> sadd SET2 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379> sdiff SET SET1 SET2
(empty list or set)
127.0.0.1:6379> sdiff SET2 SET1 SET
1) "6"
4、SDIFFSTORE 命令
用于将给定集合之间的差集存储在指定的集合中。
如果指定的DESTINATION集合已存在,则里面的元素会被覆盖。
127.0.0.1:6379> SDIFFSTORE DESTINATION KEY KEY
例如,
127.0.0.1:6379> SDIFFSTORE SET2 SET SET1
(integer)
2
127.0.0.1:6379> SMEMBERS SET2
1) "4"
2) "5"
127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
5、SINTER 命令
用于返回给定所有集合的交集。
不存在的集合被视为空集,当给定的集合当中有一个时空集时,结果也为空集。
127.0.0.1:6379> SINTER KEY KEY
例如,
127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SINTER SET SET1
1) "1"
2) "2"
3) "3"
6、SINTERSTORE 命令
用于将给定集合之间的交集存储在指定的集合中。
如果指定的DESTINATION集合已存在,则里面的元素会被覆盖。
127.0.0.1:6379> SINTERSTORE DESTINATION KEY KEY
例如,
127.0.0.1:6379> SINTERSTORE SET2 SET SET1
(integer)
3
127.0.0.1:6379> SMEMBERS SET2
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"
7、SISMEMBER 命令
用于判断给定的元素是否为指定集合的成员。
如果给定的元素是集合成员,则返回1,如果不是,则返回0。
127.0.0.1:6379> SISMEMBER KEY MEMBER
例如,
127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> sismember SET 0
(integer) 0
127.0.0.1:6379> sismember SET 1
(integer) 1
8、SMEMBERS 命令
用于返回指定集合中所有的成员。不存在的集合被视为空集。
127.0.0.1:6379> SMEMBERS KEY
例如,
127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SMEMBERS SE
(empty list or set)
9、SMOVE 命令
用于将指定成员元素从SOURCE集合移动到DESTINATION集合中。
并且,SMOVE是原子性操作。
如果SOURCE集合不存在或者不包含指定的元素,则不执行任何操作,返回0。
如果DESTINATION集合中已经包含了指定元素,SMOVE操作将该元素从SOURCE集合中删除。
如果SOURCE与DESTINATION不是集合类型是,则返回一个错误说明。
127.0.0.1:6379> SMOVE SOURCE DESTINATION MEMBER
例如,
127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SMOVE SET SET1 4
(integer) 1
127.0.0.1:6379> SMOVE SET SET1 5
(integer) 1
127.0.0.1:6379> SMOVE SET SET1 6
(integer) 0
10、SPOP 命令
用于随机获取指定集合中的一个或几个元素,并且该元素从集合中删除。
获取的个数由COUNT指定,当指定的个数超过集合的元素个数时,仅返回剩余元素。
当集合为空时,返回空集。COUNT只能为正数,如果是负数,则返回一个错误说明。
127.0.0.1:6379> SPOP KEY
例如,
127.0.0.1:6379> SPOP SET 1
1) "1"
127.0.0.1:6379> SPOP SET 3
1) "2"
2) "3"
127.0.0.1:6379> SPOP SET 3
(empty list or set)
127.0.0.1:6379> SPOP SET -1
(error) ERR index out of range
11、SRANDMEMBER 命令
用于随机获取指定集合中的一个或几个元素但不删除,并且获取的个数由COUNT指定。
如果COUNT是正数,且小于集合基数,则返回COUNT个元素的数组,其中元素内容不重复。
如果COUNT是正数,且大于集合基数,则返回整个集合。
如果COUNT是负数,则返回COUNT个元素的数组,数组中的元素可以重复。
当集合为空时,返回空集。
127.0.0.1:6379> SRANDMEMBER SET
例如,
127.0.0.1:6379> SRANDMEMBER SET 4
1) "9"
2) "8"
3) "5"
4) "6"
127.0.0.1:6379> SRANDMEMBER SET 4
1) "9"
2) "2"
3) "8"
4) "6"
127.0.0.1:6379> SRANDMEMBER SET -2
1) "8"
2) "2"
127.0.0.1:6379> SRANDMEMBER SET -2
1) "2"
2) "5"
127.0.0.1:6379> SRANDMEMBER SET -8
1) "10"
2) "3"
3) "3"
4) "10"
5) "1"
6) "6"
7) "8"
8) "10"
12、SREM 命令
用于删除给定集合中的一个或几个元素,不存在的元素将被忽略。
当KEY不是一个集合时,则返回一个错误说明。
127.0.0.1:6379> SREM KEY MEMBER
例如,
127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "7"
8) "8"
9) "9"
10) "10"
127.0.0.1:6379> SREM SET 1 3 5 7 9 11
(integer) 5
127.0.0.1:6379> SMEMBERS SET
1) "2"
2) "4"
3) "6"
4) "8"
5) "10"
13、SUNION 命令
用于返回给定集合的并集。不存在的集合被视为空集。
127.0.0.1:6379> SUNION KEY KEY
例如,
127.0.0.1:6379> SUNION SET SET1 SET2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "8"
8) "10"
127.0.0.1:6379> SMEMBERS SET
1) "2"
2) "4"
3) "6"
4) "8"
5) "10"
127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SMEMBERS SET2
1) "1"
2) "2"
3) "3"
14、SUNIONSTORE 命令
用于将给定的集合的并集存储在指定的集合DESTINATION中。
如果指定的DESTINATION集合已存在,则里面的元素会被覆盖。
127.0.0.1:6379> SUNIONSTORE DESTINATION KEY KEY
例如,
127.0.0.1:6379> SMEMBERS SET2
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SUNIONSTORE SET2 SET SET1
(integer) 8
127.0.0.1:6379> SMEMBERS SET2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "8"
8) "10"
127.0.0.1:6379>
15、SSCAN 命令
SCAN命令及其相关的SSCAN命令、HSCAN命令和ZSCAN命令都用于增量地迭代一集元素。
SSCAN命令用于迭代集合键中的元素。
与SCAN命令类型。
127.0.0.1:6379> sscan SET cursor
例如,
127.0.0.1:6379> SSCAN SET 0 MATCH *
1) "0"
2) 1) "2"
2) "4"
3) "6"
4) "8"
5) "10"
127.0.0.1:6379> SSCAN SET 0
1) "0"
2) 1) "2"
2) "4"
3) "6"
4) "8"
5) "10"
页:
[1]