学习了列表之后,发现了Redis处理字符串的功能强大。
为了适应不同场景的需求,还有一个用的很多的就是集合。
Redis提供的集合支持的类型是字符串。并且集合中的元素值是唯一的,也就是说不能出现重复数据。
而且,集合的实现是通过哈希的方式,在修改集合的时候复杂度都为O(1)。
Redis支持集合的最大数量为2^32 - 1个。
1、SADD 命令
用于将一个或多个元素加入到指定的集合中,由于集合不存在重复元素,所以已经存在的成员会被忽略。
如果指定的集合不存在,则该命令会创建该集合,并且把元素加入进去。
如果指定的KEY不是一个集合,则返回一个错误说明。
127.0.0.1:6379> SADD KEY MEMBER [member ...]
例如,
127.0.0.1:6379> SET SET AOK127.0.0.1:6379> SADD SET 1 2 3 4 5 (error) WRONGTYPE Operation against a key holding the wrong kind of value127.0.0.1:6379> SADD SET1 1 2 3 4 5(integer) 5127.0.0.1:6379> SMEMBERS SET11) "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 [key ...]
例如,
127.0.0.1:6379> sadd SET 1 2 3 4 5(integer) 5127.0.0.1:6379> sadd SET1 1 2 3 (integer) 3127.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 SET11) "4"2) "5"127.0.0.1:6379> sadd SET2 1 2 3 4 5 6(integer) 6127.0.0.1:6379> sdiff SET SET1 SET2(empty list or set)127.0.0.1:6379> sdiff SET2 SET1 SET1) "6"
4、SDIFFSTORE 命令
用于将给定集合之间的差集存储在指定的集合中。
如果指定的DESTINATION集合已存在,则里面的元素会被覆盖。
127.0.0.1:6379> SDIFFSTORE DESTINATION KEY KEY [key ...]
例如,
127.0.0.1:6379> SDIFFSTORE SET2 SET SET1(integer) 2127.0.0.1:6379> SMEMBERS SET21) "4"2) "5"127.0.0.1:6379> SMEMBERS SET11) "1"2) "2"3) "3"127.0.0.1:6379> SMEMBERS SET1) "1"2) "2"3) "3"4) "4"5) "5"
5、SINTER 命令
用于返回给定所有集合的交集。
不存在的集合被视为空集,当给定的集合当中有一个时空集时,结果也为空集。
127.0.0.1:6379> SINTER KEY KEY [key ...]
例如,
127.0.0.1:6379> SMEMBERS SET11) "1"2) "2"3) "3"127.0.0.1:6379> SMEMBERS SET1) "1"2) "2"3) "3"4) "4"5) "5"127.0.0.1:6379> SINTER SET SET11) "1"2) "2"3) "3"
6、SINTERSTORE 命令
用于将给定集合之间的交集存储在指定的集合中。
如果指定的DESTINATION集合已存在,则里面的元素会被覆盖。
127.0.0.1:6379> SINTERSTORE DESTINATION KEY KEY [key ...]
例如,
127.0.0.1:6379> SINTERSTORE SET2 SET SET1(integer) 3127.0.0.1:6379> SMEMBERS SET21) "1"2) "2"3) "3"127.0.0.1:6379> SMEMBERS SET1) "1"2) "2"3) "3"4) "4"5) "5"127.0.0.1:6379> SMEMBERS SET11) "1"2) "2"3) "3"
7、SISMEMBER 命令
用于判断给定的元素是否为指定集合的成员。
如果给定的元素是集合成员,则返回1,如果不是,则返回0。
127.0.0.1:6379> SISMEMBER KEY MEMBER
例如,
127.0.0.1:6379> SMEMBERS SET1) "1"2) "2"3) "3"4) "4"5) "5"127.0.0.1:6379> sismember SET 0(integer) 0127.0.0.1:6379> sismember SET 1(integer) 1
8、SMEMBERS 命令
用于返回指定集合中所有的成员。不存在的集合被视为空集。
127.0.0.1:6379> SMEMBERS KEY
例如,
127.0.0.1:6379> SMEMBERS SET1) "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 SET1) "1"2) "2"3) "3"4) "4"5) "5"127.0.0.1:6379> SMEMBERS SET11) "1"2) "2"3) "3"127.0.0.1:6379> SMOVE SET SET1 4(integer) 1127.0.0.1:6379> SMOVE SET SET1 5(integer) 1127.0.0.1:6379> SMOVE SET SET1 6(integer) 0
10、SPOP 命令
用于随机获取指定集合中的一个或几个元素,并且该元素从集合中删除。
获取的个数由COUNT指定,当指定的个数超过集合的元素个数时,仅返回剩余元素。
当集合为空时,返回空集。COUNT只能为正数,如果是负数,则返回一个错误说明。
127.0.0.1:6379> SPOP KEY [count]
例如,
127.0.0.1:6379> SPOP SET 11) "1"127.0.0.1:6379> SPOP SET 31) "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 [count]
例如,
127.0.0.1:6379> SRANDMEMBER SET 41) "9"2) "8"3) "5"4) "6"127.0.0.1:6379> SRANDMEMBER SET 41) "9"2) "2"3) "8"4) "6"127.0.0.1:6379> SRANDMEMBER SET -21) "8"2) "2"127.0.0.1:6379> SRANDMEMBER SET -21) "2"2) "5"127.0.0.1:6379> SRANDMEMBER SET -81) "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 [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) 5127.0.0.1:6379> SMEMBERS SET1) "2"2) "4"3) "6"4) "8"5) "10"
13、SUNION 命令
用于返回给定集合的并集。不存在的集合被视为空集。
127.0.0.1:6379> SUNION KEY KEY [key ...]
例如,
127.0.0.1:6379> SUNION SET SET1 SET21) "1"2) "2"3) "3"4) "4"5) "5"6) "6"7) "8"8) "10"127.0.0.1:6379> SMEMBERS SET1) "2"2) "4"3) "6"4) "8"5) "10"127.0.0.1:6379> SMEMBERS SET11) "1"2) "2"3) "3"4) "4"5) "5"127.0.0.1:6379> SMEMBERS SET21) "1"2) "2"3) "3"
14、SUNIONSTORE 命令
用于将给定的集合的并集存储在指定的集合DESTINATION中。
如果指定的DESTINATION集合已存在,则里面的元素会被覆盖。
127.0.0.1:6379> SUNIONSTORE DESTINATION KEY KEY [key ...]
例如,
127.0.0.1:6379> SMEMBERS SET21) "1"2) "2"3) "3"127.0.0.1:6379> SUNIONSTORE SET2 SET SET1(integer) 8127.0.0.1:6379> SMEMBERS SET21) "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 [MATCH pattern] [COUNT count]
例如,
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"