文档章节

redis 集合操作

泡海椒
 泡海椒
发布于 2016/04/04 18:10
字数 1629
阅读 70
收藏 4

SADD key member


将member元素加入到集合key当中。


如果member元素已经是该集合的成员,那SADD命令不执行任何操作。

假如key不存在,则创建一个只包含member元素作成员的集合。

当key不是集合类型时,返回一个错误。


时间复杂度:

    O(1)

返回值:

    如果添加元素成功,返回1。

    如果元素已经是集合的成员,返回0。


 

Redis代码  收藏代码

  1. <span style="font-size: small;">redis> SADD bbs "v2ex.com"  

  2. (integer) 1  

  3. redis> SADD bbs "codecompo.com"  

  4. (integer) 1  

  5.   

  6. redis> SMEMBERS bbs     # 显示bbs集合中所有成员  

  7. 1"codecompo.com"  

  8. 2"v2ex.com"  

  9.   

  10. redis> SADD bbs "v2ex.com"  # 尝试添加重复元素,返回0  

  11. (integer) 0</span>  

 




SINTER key [key ...]


返回一个集合的全部成员,该集合是所有给定集合的交集。


不存在的key被视为空集。

当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。


时间复杂度:

    O(N * M),N为给定集合当中基数最小的集合,M为给定集合的个数。

返回值:

    交集成员的列表。


 

Redis代码  收藏代码

  1. <span style="font-size: small;">redis> SMEMBERS group_1  

  2. 1"LI LEI"  

  3. 2"TOM"  

  4. 3"JACK"   # <-  

  5.   

  6. redis> SMEMBERS group_2  

  7. 1"HAN MEIMEI"  

  8. 2"JACK"   # <-  

  9.   

  10. redis> SINTER group_1 group_2  

  11. 1"JACK"</span>  

 

 

 


SMOVE source destination member

 

将member元素从source集合移动到destination集合。

 

SMOVE是原子性操作。

如果source集合不存在或不包含指定的member元素,则SMOVE命令不执行任何操作,仅返回0。否则,member元素从source集合中被移除,并添加到destination集合中去。

当destination集合已经包含member元素时,SMOVE命令只是简单地将source集合中的member元素删除。

当source或destination不是集合类型时,返回一个错误。

 

复杂度:

    O(1)

返回值:

    如果member元素被成功移除,返回1。

    如果member元素不是source集合的成员,并且没有任何操作对destination集合执行,那么返回0。

 

 

Redis代码  收藏代码

  1. redis> SMEMBERS songs  

  2. 1"Billie Jean"  

  3. 2"Believe Me"  

  4.   

  5. redis> SMEMBERS my_songs  

  6. (empty list or set)  

  7.   

  8. redis> SMOVE songs my_songs "Believe Me"  

  9. (integer) 1  

  10.   

  11. redis> SMEMBERS songs  

  12. 1"Billie Jean"  

  13.   

  14. redis> SMEMBERS my_songs  

  15. 1"Believe Me"  

 

 


SUNION key [key ...]

 

返回一个集合的全部成员,该集合是所有给定集合的并集。

 

不存在的key被视为空集。

 

复杂度:

    O(N),N是所有给定集合的成员数量之和。

返回值:

    并集成员的列表。

 

 

Redis代码  收藏代码

  1. redis> SMEMBERS songs  

  2. 1"Billie Jean"  

  3.   

  4. redis> SMEMBERS my_songs  

  5. 1"Believe Me"  

  6.   

  7. redis> SUNION songs my_songs  

  8. 1"Billie Jean"  

  9. 2"Believe Me"  

 

 


SCARD key

 

返回集合的基数(集合中元素的数量)。

 

复杂度:

    O(1)

返回值:

    集合的基数。

    当key不存在时,返回0。

 

 

Redis代码  收藏代码

  1. redis> SMEMBERS tool  

  2. 1"pc"  

  3. 2"printer"  

  4. 3"phone"  

  5.   

  6. redis> SCARD tool  

  7. (integer) 3  

  8.   

  9. redis> SMEMBERS fake_set  

  10. (empty list or set)  

  11.   

  12. redis> SCARD fake_set  

  13. (integer) 0  

 

 


SINTERSTORE destination key [key ...]

 

此命令等同于SINTER,但它将结果保存到destination集合,而不是简单地返回结果集。

 

如果destination集合已经存在,则将其覆盖。

 

时间复杂度:

    O(N * M),N为给定集合当中基数最小的集合,M为给定集合的个数。

返回值:

    结果集中的元素数量。

 

 

Redis代码  收藏代码

  1. redis> SMEMBERS songs  

  2. 1"good bye joe"   # <-  

  3. 2"hello,peter"  

  4.   

  5. redis> SMEMBERS my_songs  

  6. 1"good bye joe"   # <-  

  7. 2"falling"  

  8.   

  9. redis> SINTERSTORE song_and_my_song songs my_songs  

  10. (integer) 1  

  11.   

  12. redis> SMEMBERS song_and_my_song  

  13. 1"good bye joe"  

 

 


SPOP key

 

移除并返回集合中的一个随机元素。

 

复杂度:

    O(1)

返回值:

    被移除的随机元素。

    当key不存在或key是空集时,返回nil。

 

 

Redis代码  收藏代码

  1. redis> SMEMBERS my_sites  

  2. 1"huangz.iteye.com"  

  3. 2"sideeffect.me"  

  4. 3"douban.com/people/i_m_huangz"  

  5.   

  6. redis> SPOP my_sites  

  7. "huangz.iteye.com"  

  8.   

  9. redis> SMEMBERS my_sites  

  10. 1"sideeffect.me"  

  11. 2"douban.com/people/i_m_huang"  

 

 


SUNIONSTORE destination key [key ...]

 

此命令等同于SUNION,但它将结果保存到destination集合,而不是简单地返回结果集。

 

如果destination已经存在,则将其覆盖。

 

复杂度:

    O(N),N是所有给定集合的成员数量之和。

返回值:

    结果集中的元素数量。

 

 

Redis代码  收藏代码

  1. redis> SMEMBERS ms_sites  

  2. 1"microsoft.com"  

  3. 2"skype.com"  

  4.   

  5. redis> SMEMBERS google_sites  

  6. 1"youtube.com"  

  7. 2"google.com"  

  8.   

  9. redis> SUNIONSTORE google_and_ms_sites ms_sites google_sites  

  10. (integer) 4  

  11.   

  12. redis> SMEMBERS google_and_ms_sites  

  13. 1"microsoft.com"  

  14. 2"skype.com"  

  15. 3"google.com"  

  16. 4"youtube.com"  

 

 


SDIFF key [key ...]

 

返回一个集合的全部成员,该集合是第一个给定集合和其他所有给定集合的差集 。

 

不存在的key被视为空集。

 

复杂度:

    O(N),N是所有给定集合的成员数量之和。

返回值:

    交集成员的列表。

 

 

Redis代码  收藏代码

  1. redis> SMEMBERS peter's_movies  

  2. 1"bet man"  

  3. 2"start war"  

  4. 3"2012"   # <-  

  5.   

  6. redis> SMEMBERS joe's_movies  

  7. 1"hi, lady"  

  8. 2"Fast Five"  

  9. 3"2012"   # <-  

  10.   

  11. redis> SDIFF peter's_movies joe's_movies  

  12. 1"bet man"  

  13. 2"start war"  

 

 


SISMEMBER key member

 

判断member元素是否是集合的成员。

 

时间复杂度:

    O(1)

返回值:

    如果member元素是集合的成员,返回1。

    如果member元素不是集合的成员,或key不存在,返回0。

 

 

Redis代码  收藏代码

  1. redis> SMEMBERS joe's_movies  

  2. 1"hi, lady"  

  3. 2"Fast Five"  

  4. 3"2012"  

  5.   

  6. redis> SISMEMBER joe's_movies "bet man"  

  7. (integer) 0  

  8.   

  9. redis> SISMEMBER joe's_movies "Fast Five"  

  10. (integer) 1  

 

 


SRANDMEMBER key

 

返回集合中的一个随机元素。

 

该操作和SPOP相似,但SPOP将随机元素从集合中移除并返回,而SRANDMEMBER则仅仅返回随机元素,而不对集合进行任何改动。

 

时间复杂度:

    O(1)

返回值:

    被选中的随机元素。 当key不存在或key是空集时,返回nil。

 

 

Redis代码  收藏代码

  1. redis> SMEMBERS joe's_movies  

  2. 1"hi, lady"  

  3. 2"Fast Five"  

  4. 3"2012"  

  5.   

  6. redis> SRANDMEMBER joe's_movies  

  7. "Fast Five"  

  8.   

  9. redis> SMEMBERS joe's_movies    # 集合中的元素不变  

  10. 1"hi, lady"  

  11. 2"Fast Five"  

  12. 3"2012"  

 

 


SDIFFSTORE destination key [key ...]

 

此命令等同于SDIFF,但它将结果保存到destination集合,而不是简单地返回结果集。

 

如果destination集合已经存在,则将其覆盖。

 

复杂度:

    O(N),N是所有给定集合的成员数量之和。

返回值:

    结果集中的元素数量。

 

 

Redis代码  收藏代码

  1. redis> SMEMBERS joe's_movies  

  2. 1"hi, lady"  

  3. 2"Fast Five"  

  4. 3"2012"  

  5.   

  6. redis> SMEMBERS peter's_movies  

  7. 1"bet man"  

  8. 2"start war"  

  9. 3"2012"  

  10.   

  11. redis> SDIFFSTORE joe_diff_peter joe's_movies peter's_movies  

  12. (integer) 2  

  13.   

  14. redis> SMEMBERS joe_diff_peter  

  15. 1"hi, lady"  

  16. 2"Fast Five"  

 

 

 

SMEMBERS key

 

返回集合中的所有成员。

 

时间复杂度:

    O(N),N为集合的基数。

返回值:

    集合中的所有成员。

 

 

Redis代码  收藏代码

  1. redis> SMEMBERS prog_lang  

  2. 1"c"  

  3. 2"ruby"  

  4. 3"python"  

 

 


SREM key member

 

移除集合中的member元素。

 

如果member元素不是集合中的成员,则SREM命令不执行任何操作。

当key不是集合类型,返回一个错误。

时间复杂度:

    O(1)

返回值:

    如果移除元素成功,返回1。

    如果member元素不是集合成员,返回0。

 

 

Redis代码  收藏代码

  1. redis> SMEMBERS prog_lang  

  2. 1"c"  

  3. 2"ruby"  

  4. 3"python"  

  5.   

  6. redis> SREM prog_lang "c"  

  7. (integer) 1  

  8.   

  9. redis> SMEMBERS prog_lang  

  10. 1"ruby"  

  11. 2"python"  

  12.   

  13. redis> SREM prog_lang "scheme"  

  14. (integer) 0  

  15.   

  16. redis> SMEMBERS prog_lang  

  17. 1"ruby"  

  18. 2"python"  

   


© 著作权归作者所有

泡海椒
粉丝 11
博文 282
码字总数 288344
作品 0
成都
程序员
私信 提问
初识Redis(安装,持久化,数据类型)

[toc] 初识Redis(安装,持久化,数据类型) 一、Redis介绍: [ ] Redis和Memcached类似,也属于k-v数据存储,但是功能和操作性要比Memcached好很多。 [ ] Redis官网redis.io, 当前最新稳定版...

Xavi2017
2018/06/25
0
0
Redis研究-3.6 Redis 5种类型的基本使用2

1.字符串 1.1 整数类型操作 操作: get redis_int结果: (nil) 操作: incr redis_int结果: (integer) 1 1.2 字节串 2.列表 3.集合 4.散列 5.有序集合...

会飞的杨先生
2015/11/03
0
0
redis入门笔记

1.Jedis是什么? Jedis是redis的java版本的客户端实现。 2.Jedis操作步骤如下: 1->获取Jedis实例需要从JedisPool中获取; 2->用完Jedis实例需要返还给JedisPool; 3->如果Jedis在使用过程中...

婷瑄
2016/07/12
30
0
Redis总结

一、基本概念 redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 特点: Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。 ...

冰-冰
2016/08/30
50
0
安装redis和phpredis模块

安装redis shell> wget http://redis.googlecode.com/files/redis-2.0.4.tar.gz shell> tar zxvf redis-2.0.4.tar.gz shell> mv redis-2.0.4 redis shell> cd redis shell> make shell> redi......

老牛
2011/03/14
0
0

没有更多内容

加载失败,请刷新页面

加载更多

【JAVA基础☞内部存储和GC】Java方法区和永久代

Java方法区和永久代 这里只讨论HotSpot虚拟机,这也是目前使用的最多的JVM。Sun JDK7 HotSpot虚拟机的内存模型如下图所示: 1、什么是方法区 在Java虚拟机中,方法区是可供各线程共享的运行时...

卯金刀GG
13分钟前
1
0
Spring Boot Actuator

编者注 由于开发一个对性能要求很强的后台应用,突然发现部署到aliyun发生问题,而普通笔记本没有任何问题,则需要持续一段时间的监控定位函数执行时间,分析过程,并添加健康检查的可视化内...

抢小孩糖吃
15分钟前
3
0
Zabbix监控ActiveMQ

当我们在线上使用了ActiveMQ 后,我们需要对一些参数进行监控,比如 消息是否有阻塞,哪个消息队列阻塞了,总的消息数是多少等等。下面我们就通过 Zabbix 结合 Python 脚本来实现对 ActiveMQ...

SEOwhywhy
26分钟前
2
0
非webpack require.js + vue + vueRouter + iView 实现按需加载

适合一个人开发的时候,在整个php框架下,又想单页,又可以直接后端assign变量穿透到模板。又不想写接口搞前后分离脚手架一大堆npm 包, 在php模板下 引入require.js <!DOCTYPE html><html...

一箭落旄头
42分钟前
7
0
新特性解读 | MySQL 8.0 窗口函数详解

原创作者: 杨涛涛 背景 一直以来,MySQL 只有针对聚合函数的汇总类功能,比如MAX, AVG 等,没有从 SQL 层针对聚合类每组展开处理的功能。不过 MySQL 开放了 UDF 接口,可以用 C 来自己写UDF...

爱可生
47分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部