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

一个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文件写中的f.flush()方法

    f = open("input.txt", "w") f.write("aaaaaa") f.flush() #强行把缓冲区中的内容放到磁盘 ...

  2. 【javascript】利用jquery ajaxPrefilter防止ajax重复提交

    利用jquery ajaxPrefilter中断请求 var pendingRequests = {}; $.ajaxPrefilter(function( options, originalOpti ...

  3. BZOJ4590 Shoi2015 自动刷题机 【二分】

    BZOJ4590 Shoi2015 自动刷题机 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机–一种可以自动AC题目的神秘装置.自动刷题机刷题的方式非常简 ...

  4. Oracle中用exp/imp命令快速导入导出数据

    from: http://blog.csdn.net/wangchunyu11155/article/details/53635602 [用 exp 数 据 导 出]: 1 将数据库TEST完全导出, ...

  5. pat乙级 1091 N-自守数 (15 分)

    如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”.例如 3×92​2​​=25392,而 25392 的末尾两位正好是 92,所以 92 是一个 3-自守 ...

  6. B/S供应链(打印管理)问题答疑

    1.环境上的搭建答疑 .{"System.Data.OracleClient需要 Oracle 客户端软件 version 8.1.7或更高版本."} 解决:未装客户端,或所装版本 ...

  7. sublime python运行插件

    Tools->New plugin 粘贴下面代码,在插件目录新建文件夹,保存 import sublime, sublime_plugin import os class ExampleComm ...

  8. drill java && spring jdbc 连接使用

     原生 jdbc 连接   1. maven 包 <dependency> <groupId>org.apache.drill.exec</groupId> < ...

  9. iOS7 自己定义动画跳转

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/Liar0606/article/details/26399125 简单介绍 在iOS7系统中,假设你 ...

  10. Vim使用YouCompleteMe达到类似IDE的代码提示、补全,以及其他实用设置

    接触Linux有两年了,vim还是只会简单的操作.最近实在受不了sublime的代码提示,决定花点时间来配置下vim.本文讲自己认为方便的vim配置,称不上完美,只讲究简单实用. 使用 ctags 主 ...