8.5 集合对象

集合对象的编码可以是intset或者hashtable
intset编码的集合对象使用整数集合作为底层实现,集合对象包含的所有元素都被保存在整数集合里面。
hashtable编码的集合对象使用字典作为底层实现,字典的每个键都是一个字符串对象,每个字符串对象包含了一个集合元素,而字典的值全部被设置为NULL。

8.5.1 编码的转换

当集合对象可以同时满足以下两个条件时,对象使用intset编码:

  • 集合对象保存的所有元素都是整数值
  • 集合对象保存的元素数量不超过512个

不能满足这两个条件的集合对象需要使用hashtable编码。

8.5.2 集合命令

1. SADD
SADD key member [member ...]

将一个或多个member元素加入到集合key当中,已经存在于集合的member元素将被忽略。
假如key不存在,则创建一个只包含member元素作成员的集合。
key不是集合类型时,返回一个错误。

2. SCARD
SCARD key

返回集合key的基数(集合中元素的数量)。

3. SDIFF
SDIFF key [key ...]

返回一个集合的全部成员,该集合是所有给定集合之间的差集。
不存在的key被视为空集。

4. SDIFFSTORE
SDIFFSTORE destination key [key ...]

这个命令的作用和SDIFF类似,但它将结果保存到destination集合,而不是简单地返回结果集。
如果destination集合已经存在,则将其覆盖。
destination可以是key本身。

5. SINTER
SINTER key [key ...]

返回一个集合的全部成员,该集合是所有给定集合的交集。
不存在的key被视为空集。
当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。

6. SINTERSTORE
SINTERSTORE destination key [key ...]

这个命令类似于SINTER命令,但它将结果保存到destination集合,而不是简单地返回结果集。
如果destination集合已经存在,则将其覆盖。
destination可以是key本身。

7. SISMEMBER
SISMEMBER key member

判断member元素是否集合key的成员。

8. SMEMBERS
SMEMBERS key

返回集合key中的所有成员。
不存在的key被视为空集合。

9. SMOVE
SMOVE source destination member

member元素从source集合移动到destination集合。
SMOVE是原子性操作。
如果source集合不存在或不包含指定的member元素,则SMOVE命令不执行任何操作,仅返回0。否则,member元素从source集合中被移除,并添加到destination集合中去。
destination集合已经包含member元素时,SMOVE命令只是简单地将source集合中的member元素删除。
sourcedestination不是集合类型时,返回一个错误。

10. SPOP
SPOP key

移除并返回集合中的一个随机元素。
如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用SRANDMEMBER命令。

11. SRANDMEMBER
SRANDMEMBER key [count]

如果命令执行时,只提供了key参数,那么返回集合中的一个随机元素。

12. SREM
SREM key member [member ...]

移除集合key中的一个或多个member元素,不存在的member元素会被忽略。
key不是集合类型,返回一个错误。

13. SUNION
SUNION key [key ...]

返回一个集合的全部成员,该集合是所有给定集合的并集。
不存在的key被视为空集。

14. SUNIONSTORE
SUNONSTORE destination key [key ...]

这个命令类似于SUNION命令,但它将结果保存到destination集合,而不是简单地返回结果集。
如果destination已经存在,则将其覆盖。
destination可以是key本身。

15. SSCAN
SSCAN key cursor [MATCH pattern] [COUNT count]

你可能感兴趣的:(8.5 集合对象)