美文网首页
8.5 集合对象

8.5 集合对象

作者: 猪大金 | 来源:发表于2018-09-22 21:57 被阅读0次

集合对象的编码可以是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 集合对象

    集合对象的编码可以是intset或者hashtableintset编码的集合对象使用整数集合作为底层实现,集合对象...

  • OC字典NSDictionary

    三种集合类 NSSArray 用于对象有序集合(NSObject对象)NSSet 用于对象的无序集合NSDicti...

  • android随笔之java集合之间的继承关系

    java集合: 集合类: 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合...

  • Java集合Collection和泛型

    集合的原理是什么呢 ? 集合有多种实现,其实就是集合类去描述集合对象,赋予了该类对象存储对象的能力。集合实现有数组...

  • java的集合以及集合之间的继承关系

    java集合:集合类:集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对...

  • redis中的对象

    redis的对象包含5种对象: 字符串对象 列表对象 哈希对象 集合对象 有序集合对象 redis对象的好处 针对...

  • 并发集合

    集合类:集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(re...

  • 集合对象

    集合是一种包含了许多相似对象实例的对象类型。 访问集合 多数集合对象和容器都是通过Document对象或Datab...

  • iOS对象深浅拷贝总结

    一、非集合对象(NSString、NSNumeber) 在非集合类对象中:对immutable对象(不可变对象)进...

  • 面试考点

    1、Android Intent之传递带有对象的集合(Serializable传递对象和对象集合) [https:...

网友评论

      本文标题:8.5 集合对象

      本文链接:https://www.haomeiwen.com/subject/mznxoftx.html