1.Redis数据类型之集合(Set)命令

Redis的数据类型集合(Set)是String类型的无序集合。集合无序且不存在重复的元素,每个元素都是唯一的。集合是通过哈希表来实现的,所以使用集合进行增加、删除、查询操作时的效率特别高,复杂度为(1)。一个集合所能存储的最大容量为2^32-1个元素。

1.1向集合中添加元素

1.SADD命令:添加多个元素到集合中

命令格式:


SADD key member [member]


SADD命令用于将一个或多个member元素添加到集合key中。如果这个集合key中已经存在这个member元素那么它将会被忽略。如果集合key不存在,就创建一个集合,这个集合中只包含这里设置的member元素。当key不是集合类型时,返回一个错误。

返回值:执行命令后,返回被添加到集合中的新元素的数量,不包含被忽略的元素。

2.SMOVE命令:移动集合元素到另一个集合中

命令格式:


SMOVE source destination member


SMOVE 命令用于将集合source中的member元素移动到集合destination中。SMOVE命令是原子性操作,要么执行成功,要么不执行。如果集合source不存在,或者集合source中不存在member元素,则SMOVE命令不执行任何操作,将返回0;如果集合source中包含member元素,那么SMOVE命令会将member元素从集合source移动到集合destination中。

当集合destination中已经包含member元素时,SMOVE命令只是简单的将集合source中的member元素删除,而不会移动。

返回值:当member元素成功地从集合source移动到集合destination中时,返回1;当集合source中没有member元素,或者集合source不存在,返回0,表示SMOVE命令不做任何事情。

3.SUNIONSTORE命令:保存多个集合元素到新集合中

命令格式:


SUNIONSTORE destination key [key...]


SUNIONSTORE命令用于获取一个或多个集合的key中的全部元素,并将这些元素保存到集合destination中,这个集合中的元素是给定的集合key元素的交集。该命令与SUNION命令类似。当只有一个集合key时,执行该命令后,产生的集合destination就是这个集合key本身。

返回值:该命令成功执行后,返回这个交集集合destination中的元素数量。

1.2获取集合元素

1.SISMEMBER命令:判断某个元素是否在集合中

命令格式


SISMEMBER destination key [key]


SISMEMBER 命令用于判断元素number是否在集合key中,换句话说,就是判断这个元素number是不是集合key的成员。

返回值:如果集合key中存在元素number,则返回1;如果集合key中不存在元素number;或者集合key不存在,就返回0;

2.SCARD命令:获取集合中元素的数量

命令格式:


SCARD key


SCARD命令用于获取集合key中元素的数量。

返回值:返回集合key中的元素个数。当集合key不存在时,返回0。

3.SMEMBERS命令:获取集合中的所有元素

命令格式:


SMEMBERS key


SMEMBERS命令用于获取集合key中的所有元素。如果这个集合key不存在,则会被看作空集合。

返回值:该命令成功执行后,返回这个集合中的所有元素。

4.SRANDMEMBER命令:随机获取集合中的一个元素

命令格式:


SRANDMEMBER key [count]


SRANDMEMBER 命令用于随机返回集合key中的一个元素,当且仅当只有参数key时。在后来的版本添加了参数count。参数count可以是一个正数,也可以是一个负数。当count为证书,且小于集合基数(集合元素个数最大值)时,执行该命令后返回一个包含count个元素的数组,数组中的元素各不相同。当count大于等于集合集合基数时,返回整个集合。当count为负数时,执行该命令后,返回一个元素可能重复多次的数组,这个数组的长度是count的绝对值。

该命令与spop命令的功能类似,命令spop在从集合中随机删除元素的同时返回这个元素;而SRANDMEMBER命令只是随机返回元素,并不会改动这个集合的内容。

返回值:如果集合为空,则返回nil;如果只设置了key参数,则将会随机返回一个元素,如果设置了count,则将会返回一个数组;如果集合为空,则将会返回一个空数组。

5.SUNION:获取多个集合中的所有元素

命令格式:


SUNION key [key...]


SUNION 命令用于获取一个或多个集合key中的全部元素,这个返回的集合是所有给定集合key的并集。如果集合key不存在,则会被看作空集。

返回值:SUNION命令成功执行后,返回并集元素列表。

1.3集合运算

1.SDIFF命令:获取多个集合元素的差集

命令格式:


SDIFF key [key...]


2.SDIFFSTORE命令:获取多个集合差集的元素个数

命令格式:


SDIFFSTORE destination key [key...]


3.SINTER命令:获取多个元素集合的交集

命令格式:


SINTER key [key...]


4.SINTERSTORE命令:获取多个集合交集的元素个数


SINTERSTORE destination key [key]


1.4删除集合元素

1.SPOP命令:删除集合中的元素

命令格式:


SPOP key [count]


SPOP命令用于随机删除集合key中的一个或多个元素

返回值: SPOP命令成功执行后,返回被删除的随机元素。如果集合key不存在,或者集合key是空集合,则返回nil。

2,SREM命令:删除集合中的多个元素

命令格式:


SREM key member [member]


SREM命令用于删除集合key中的一个或多个member元素。该命令在执行过程中会忽略不存在的member元素。如果key不是集合类型的,则返回一个错误。