#### 集合
* * * * *
[TOC]
###### SADD key member [member ...]
起始版本:1.0.0
时间复杂度:O(N) where N is the number of members to be added.
添加一个或多个指定的member元素到集合的 key中.指定的一个或者多个元素member 如果已经在集合key中存在则忽略.如果集合key 不存在,则新建集合key,并添加member元素到集合key中.
如果key 的类型不是集合则返回错误.
返回值
integer-reply:返回新成功添加到集合里元素的数量,不包括已经存在于集合中的元素.
历史
= 2.4: 接受多个member 参数. Redis 2.4 以前的版本每次只能添加一个member元素.
例子
~~~
redis> SADD myset "Hello"
(integer) 1
redis> SADD myset "World"
(integer) 1
redis> SADD myset "World"
(integer) 0
redis> SMEMBERS myset
1) "World"
2) "Hello"
~~~
###### SCARD key
起始版本:1.0.0
时间复杂度:O(1)
返回集合存储的key的基数 (集合元素的数量).
返回值
integer-reply: 集合的基数(元素的数量),如果key不存在,则返回 0.
举例
~~~
redis> SADD myset "Hello"
(integer) 1
redis> SADD myset "World"
(integer) 1
redis> SCARD myset
(integer) 2
~~~
###### SDIFF key [key ...]
起始版本:1.0.0
时间复杂度:O(N) where N is the total number of elements in all given sets.
返回的集合元素是第一个key的集合与后面所有key的集合的差集
返回一个集合与给定集合的差集的元素.
举例:
~~~
key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SDIFF key1 key2 key3 = {b,d}
~~~
不存在的key认为是空集.
返回值
array-reply:结果集的元素.
~~~
redis> SADD key1 "a"
(integer) 1
redis> SADD key1 "b"
(integer) 1
redis> SADD key1 "c"
(integer) 1
redis> SADD key2 "c"
(integer) 1
redis> SADD key2 "d"
(integer) 1
redis> SADD key2 "e"
(integer) 1
redis> SDIFF key1 key2
1) "a"
2) "b"
~~~
###### SDIFFSTORE destination key [key ...]
起始版本:1.0.0
时间复杂度:O(N) where N is the total number of elements in all given sets.
该命令类似于 SDIFF, 不同之处在于该命令不返回结果集,而是将结果存放在destination集合中.
如果destination已经存在, 则将其覆盖重写.
返回值
integer-reply: 结果集元素的个数.
例子
~~~
redis> SADD key1 "a"
(integer) 1
redis> SADD key1 "b"
(integer) 1
redis> SADD key1 "c"
(integer) 1
redis> SADD key2 "c"
(integer) 1
redis> SADD key2 "d"
(integer) 1
redis> SADD key2 "e"
(integer) 1
redis> SDIFFSTORE key key1 key2
(integer) 2
redis> SMEMBERS key
1) "b"
2) "a"
~~~
###### SINTER key [key ...]
起始版本:1.0.0
时间复杂度:O(N*M) worst case where N is the cardinality of the smallest set and M is the number of sets.
返回指定所有的集合的成员的交集.
例如:
~~~
key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SINTER key1 key2 key3 = {c}
~~~
如果key不存在则被认为是一个空的集合,当给定的集合为空的时候,结果也为空.(一个集合为空,结果一直为空).
返回值
array-reply: 结果集成员的列表.
例子
~~~
redis> SADD key1 "a"
(integer) 1
redis> SADD key1 "b"
(integer) 1
redis> SADD key1 "c"
(integer) 1
redis> SADD key2 "c"
(integer) 1
redis> SADD key2 "d"
(integer) 1
redis> SADD key2 "e"
(integer) 1
redis> SINTER key1 key2
1) "c"
~~~
###### SINTERSTORE destination key [key ...]
起始版本:1.0.0
时间复杂度:O(N*M) worst case where N is the cardinality of the smallest set and M is the number of sets.
这个命令与SINTER命令类似, 但是它并不是直接返回结果集,而是将结果保存在 destination集合中.
如果destination 集合存在, 则会被重写.
返回值
integer-reply: 结果集中成员的个数.
例子
~~~
redis> SADD key1 "a"
(integer) 1
redis> SADD key1 "b"
(integer) 1
redis> SADD key1 "c"
(integer) 1
redis> SADD key2 "c"
(integer) 1
redis> SADD key2 "d"
(integer) 1
redis> SADD key2 "e"
(integer) 1
redis> SINTERSTORE key key1 key2
(integer) 1
redis> SMEMBERS key
1) "c"
~~~
###### SISMEMBER key member
起始版本:1.0.0
时间复杂度:O(1)
返回成员 member 是否是存储的集合 key的成员.
返回值
integer-reply,详细说明:
如果member元素是集合key的成员,则返回1
如果member元素不是key的成员,或者集合key不存在,则返回0
##举例
~~~
redis> SADD myset "one"
(integer) 1
redis> SISMEMBER myset "one"
(integer) 1
redis> SISMEMBER myset "two"
(integer) 0
~~~
###### SMEMBERS key
起始版本:1.0.0
时间复杂度:O(N) where N is the set cardinality.
返回key集合所有的元素.
该命令的作用与使用一个参数的SINTER 命令作用相同.
返回值
array-reply:集合中的所有元素.
举例
~~~
redis> SADD myset "Hello"
(integer) 1
redis> SADD myset "World"
(integer) 1
redis> SMEMBERS myset
1) "World"
2) "Hello"
~~~
###### SUNION key [key ...]
起始版本:1.0.0
时间复杂度:O(N) where N is the total number of elements in all given sets.
返回给定的多个集合的并集中的所有成员.
例如:
~~~
key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SUNION key1 key2 key3 = {a,b,c,d,e}
~~~
不存在的key可以认为是空的集合.
返回值
array-reply:并集的成员列表
举例
~~~
redis> SADD key1 "a"
(integer) 1
redis> SADD key1 "b"
(integer) 1
redis> SADD key1 "c"
(integer) 1
redis> SADD key2 "c"
(integer) 1
redis> SADD key2 "d"
(integer) 1
redis> SADD key2 "e"
(integer) 1
redis> SUNION key1 key2
1) "a"
2) "b"
3) "c"
4) "d"
5) "e"
~~~
- 目录
- 安装扩展
- 在 Windows 上安装 PHP 扩展
- 测试Redis扩展函数
- 教程
- 简介
- Redis 安装
- Redis 配置
- 运行
- 测试
- 书籍
- 《Redis开发与运维》
- 《Redis入门指南》
- 《Redis实战》
- 《当 Redis 遇上 ThinkPHP5》
- 参考站点
- 下载
- 命令参考
- 管理工具
- 视频
- 云数据库 Redis 版使用教程
- Redis 深入之道
- Redis高可用教程
- Redis入门
- NoSQL概述
- Redis概述
- Redis安装
- Jedis入门
- PHP命令
- PHP中利用Redis管道加快执行
- Hash操作
- Set操作
- Gearman
- MySQL - Redis配合使用方案
- 应用场景
- 缓存应用
- Redis实现简单的条件查询功能
- 获取网站中点击量最高的前n篇文章
- 显示最新的项目列表
- 排行榜相关
- 设计技巧
- SortedSets
- List列表
- 消息队列
- 最新文章
- Set集合
- 共同好友
- 独立 IP
- Linux教程
- 常用命令
- 哈希命令
- 字符串
- 集合
- 有序集合
- Redis 有序集合命令
- 有序集合命令(中)
- 发布订阅
- 用例
- 列表
- Lindex
- Ltrim
- Rpush
- Lset
- Llen
- Lpush
- 信息
- info memory
- 安装
- 数据类型
- Redis管道(pipeline)
- Memory Command
- 阿里云Redis
- 架构
- 4.0版本
- Redis 4.0 新功能介绍
- Redis Desktop Manager
- 创建hash列表数据
- Lua: 给 Redis 用户的入门指导
- Lua入门
- 乐观锁介绍
- 悲观锁介绍
- 脏数据
- Redis核心概念
- Redis事务
- Lua
- 在Redis中使用lua脚本
- php-redis
- mysql缓存服务器
- redis setnx 实现分布式锁和单机锁
- 为什么分布式一定要有Redis?