集合的基本特征:无序,唯一。

一个redis集合最多能存放232-1个集合元素。其强大之处在于它支持集合的“交、差、并”运算,而且能够快速的判断某个给定值是否在集合中。

1、基本命令:

SADD key member [member ...]
SREM key member [member ...] SMEMBERS key
SISMEMBER key member SCARD key SPOP key [count]
SRANDMEMBER key [count]
SMOVE source destination member //交
SINTER key [key ...]
SINTERSTORE destination key [key ...] //差
SDIFF key [key ...]
SDIFFSTORE destination key [key ...] //并
SUNION key [key ...]
SUNIONSTORE destination key [key ...]

2、命令解析:

①、SADD key member [member ...] / SREM key member [member ...]

功能:SADD向集合中新增一个或多个元素;SREM从结合总删除一个或多个元素;

时间复杂度:O(N),N是要操作的member的个数

example

②、SMEMBERS key / SISMEMBER key member

功能:SMEMBERS列出集合中的所有元素。SISMEMEBER判断member是不是属于集合。

时间复杂度:SMEMBERS为O(N),N为集合中元素总数。SISMEMBER的时间复杂度为O(1)。

example

③、SCARD key

功能:返回集合中元素的个数

时间复杂度:O(1)

example

④、SPOP key [count]  / SRANDMEMBER key [count]

功能:SPOP从集合中随机的捞出count个元素返回,并且删除返回的元素。SRANDMEMBER也是随机返回count个元素,但是不会删除集合中返回的元素。注意:count可以取正数或负数,其绝对值表示要随机返回元素的个数,如果count > 0则返回元素不能有相同的,如果count < 0则返回元素允许有相同的。

时间复杂度:O(N),N表示要返回随机元素的葛素。

example

⑤、SMOVE source destination member

功能:将“源”集合中的某个元素移动到“目的”集合中。

时间复杂度:O(1)

example

⑥、SINTER key [key ...] / SINTERSTORE destination key [key ...]

功能:“交集”运算:key1 ∩ key2 ∩ key3 ∩ ...。区别在于SINTER直接将结果返回,SINTERSTORE不会将结果返回,而是存放在destination集合中。

时间复杂度:O(N*M),N是列表中最小集合中元素的个数,M是列表中集合的个数。

example

⑦、SDIFF key [key ...] / SDIFFSTORE destination key [key ...]

功能:“差集”运算:key1 - key2 - key3 - ...

时间复杂度:O(N),N表示所有列表中集合元素的总个数

example:

⑧、SUNION key [key ...] / SUNIONSTORE destination key [key ...]

功能:“并集”运算:key1 ∪ key2 ∪ key3 ∪ ...

时间复杂度:O(N),N表示所有列表中集合元素的总个数

example

6、数据类型四:sets的更多相关文章

  1. Day1---Java 基本数据类型 - 四类八种 --九五小庞

    一.Java四大数据类型分类 1.整型 byte .short .int .long 2.浮点型 float . double 3.字符型 char 4.布尔型 boolean 二.八种基本数据类型 ...

  2. python3 第十五章 - 数据类型之Sets(集合)

    python的官网里对集合的描述是: Python also includes a data type for sets. A set is an unordered collection with ...

  3. js检测数据类型四种办法

    面试题中经常会考js数据类型检测,今天我来分享一下js中常用的四种方法判断数据类型,欢迎指点更正. 废话不多说,直入正题. 1.typeof console.log(typeof "&quo ...

  4. java的基本数据类型--四类八种

    java的数据类型 1.分为基本数据类型和引用数据类型 基本数据类型的分类:整数型: byte  占用一个字节 范围-128-127 short 占用两个字节  -2^15~2^15-1 int    ...

  5. python基础(9):基本数据类型四(set集合)、基础数据类型补充、深浅拷贝

    1. 基础数据类型补充 li = ["李嘉诚", "麻花藤", "⻩海峰", "刘嘉玲"] s = "_&qu ...

  6. redis数据类型:sets

    sets类型及操作: set是集合,它是string类型的无序集合.set是通过hash table实现的, 添加.删除和查找的复杂度都是O(1).对集合我们可以取并集.交集.差集. 通过这些操作我们 ...

  7. Python基础数据类型(四) tuple元祖

    元祖tuple(,) 元祖就是不可变的列表 元祖用()表示,元素与元素之间用逗号隔开,数据类型没有限制 tu = ('科比','詹姆斯','乔丹') tu = tuple('123') 小括号中 有一 ...

  8. Py西游攻关之基础数据类型(四)-字典

    Py西游攻关之基础数据类型 - Yuan先生 https://www.cnblogs.com/yuanchenqi/articles/5782764.html 七 Dictionary(字典) 字典是 ...

  9. reids数据类型

      今天第一次开通,写的不好,请谅解   redis并不是简单的key-value存储,实际上它是一个数据结构服务器,支持不同类型的值,也就是说,我们不仅仅把字符串当作键所指向的值,   如下这些数据 ...

随机推荐

  1. ASP.NET WebForm 与 IE10、IE11

    最近维护公司一个烂项目.NET4.0 Asp.Net WebForm(在MVC5泛滥的今天还有用WebForm的(⊙o⊙)…) IE10.IE11下aspx中大表单提交不上去,报_DoPostBack ...

  2. MapReduce工作原理(简单实例)

    Map-Reduce框架的运作完全基于<key,value>对,即数据的输入是一批<key,value>对,生成的结果也是一批<key,value>对,只是有时候它 ...

  3. Object-C 中的Selector 概念

    selector可以叫做选择器,其实指的就是对象的方法,也可以理解为C语言里面的函数指针,在面向对象里面的对应概念. @selector(xxxx)的作用是找到名字为xxxx的方法.一般用于[a pe ...

  4. iOS设备是否越狱的判断代码

    苹果是非常看重产品的安全性的,所以给用户设计了一套复杂的安全机制.这让喜爱自由,崇尚一切开放的程序员们极度不爽,于是越狱就成了苹果和黑客们反复斗法的场所.总体来说,越狱可以让我们随意安装.共享应用,但 ...

  5. RF第二讲--Selenium2Library库的简单实用

    现在对于RF的应用方法已经有很多书介绍了,网上也可以搜到免费的电子书可以学习.今天就简单和大家介绍一下RF的用法之一,就是基于Selenium2Library库的使用. 1.首先需要安装Seleniu ...

  6. ubutun Sogou输入法安装

    http://jingyan.baidu.com/article/ad310e80ae6d971849f49ed3.html 文章来自以上链接 安装搜狗输入法 下载搜狗http://pinyin.so ...

  7. PyBrain库的example之NFQ流程图分析

    PyBrain库的example之NFQ流程图分析 如下是测试程序.主要分析doEpisode和learn两个函数. #!/usr/bin/env python __author__ = 'Thoma ...

  8. centos6 查看SELinux状态 关闭SELinux

    SELinux(Security-Enhanced Linux) 是美国国家安全局(NSA)对于强制访问控制的实现,是 Linux历史上最杰出的新安全子系统.在这种访问控制体系的限制下,进程只能访问那 ...

  9. c# winform委托的使用

    可参考http://bbs.csdn.net/topics/390377875中使用new Action<>的使用方式,替代delegate的申明. public delegate voi ...

  10. SSH远程登录CentOS服务器

    1.把ssh默认远程连接端口修改为2200编辑防火墙配置:vi /etc/sysconfig/iptables防火墙增加新端口2222 -A INPUT -m state --state NEW -m ...