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

一个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. python caffe 在师兄的代码上修改成自己风格的代码

    首先,感谢师兄的帮助.师兄的代码封装成类,流畅精美,容易调试.我的代码是堆积成的,被师兄嘲笑说写脚本.好吧!我的代码只有我懂,哈哈! 希望以后代码能写得工整点.现在还是让我先懂.这里,我做了一个简单的 ...

  2. swift实现label换行

    so easy 换行的实质为在字符串中添加"\n" so, understand???

  3. 实战maven私有仓库三部曲之一:搭建和使用

    在局域网内搭建maven私有仓库,可避免每次都从中央仓库下载公共jar包,另外将A模块作为二方库发布到私有仓库后,B模块可以很方便的引用,今天我们就来实战maven私有仓库的搭建和使用: 原文地址:h ...

  4. 利用索引与不用索引区别(profiles)

    1.定义 对数据库表的一列或多列的值进行排序的一种结构(Btree方式)=(相当于二分查找法) 2.优点 加快数据检索速度 3.缺点 1.占用物理存储空间 2.当对表中数据更新时,索引需要动态维护,降 ...

  5. bzoj 5334 数学计算

    bzoj 5334 数学计算 开始想直接模拟过程做,但模数 \(M\) 不一定为质数,若没有逆元就 \(fAKe\) 掉了. 注意到操作 \(2\) 是删除对应的操作 \(1\) ,相当于只有 \(1 ...

  6. Codeforces 815C. Karen and Supermarket【树形DP】

    LINK 思路 首先发现依赖关系是一个树形的结构 然后因为直接算花多少钱来统计贡献不是很好 因为数组开不下 那就可以算一个子树里面选多少个的最小代价就可以了 注意统计贡献的时候用优惠券的答案只能在1号 ...

  7. 20165212 预备作业3 Linux安装及学习

    20165212 预备作业3Linux安装及学习 Linux虚拟机的安装过程 我像大部分同学一样,通过助教学姐给的Ubuntu下载地址下载映像文件.VB,但是屡次出现问题,不停的闪出一下错误提示窗口: ...

  8. 关于fpga优化的set input delay 和 set output delay

    set input delay 和set output delay 首先必须明确的是指的外部delay,而非input或output的内部delay,那么这外部delay包含什么呢?包含1,外部路径延 ...

  9. Visual studio环境中的一些快捷键

    VS的快键键 F12(转到定义),那怎么转回定义呢? 转回应该是Ctrl+Shift+8 自动排版:ctrl+E+D

  10. UVA11806 Cheerleaders

    题意 PDF 分析 如果要求是某行某列没有石子很好算,就一个组合数. 然后要求某行某列有,就用容斥原理就行了. 时间复杂度\(O(k^2 + 16T)\) 代码 #include<iostrea ...