最近,总是以“太忙“为借口,很久没有blog了,凡事贵在恒,希望我能够坚持不懈,毕竟在blog的时候,也能提升自己。废话不说了,直奔主题”set“

redis set 是string类型对象的无序集合,set不管存储多少对象,对存储对象的add,remove和test操作的时间复杂度是O(1)。set最多能包含 232 - 1 个member。

1、增加

语法:sadd key member[member...]

解释:对特定key的set增加一个或多个值,返回是增加元素的个数。注意:对同一个member多次add,set中只会保留一份。

  1. [root@xsf001 ~]# redis-cli
  2. redis 127.0.0.1:6379> sadd stu zhangsan lisi wangwu #新增
  3. (integer) 3
  4. redis 127.0.0.1:6379> smembers stu    #得到set的所有member
  5. 1) "wangwu"
  6. 2) "lisi"
  7. 3) "zhangsan"
  8. redis 127.0.0.1:6379> sadd stu zhangsan #增加存在的member
  9. (integer) 0
  10. redis 127.0.0.1:6379> smembers stu
  11. 1) "wangwu"
  12. 2) "lisi"
  13. 3) "zhangsan"
  14. redis 127.0.0.1:6379> sadd tech wangwu liming joe
  15. (integer) 3
  16. redis 127.0.0.1:6379> sadd tech jim
  17. (integer) 1
  18. redis 127.0.0.1:6379> smembers tech
  19. 1) "jim"
  20. 2) "liming"
  21. 3) "wangwu"
  22. 4) "joe"

2、查询

a)smembers

语法:smembers key

解释:获取set中的所有member

  1. redis 127.0.0.1:6379> smembers stu
  2. 1) "wangwu"
  3. 2) "lisi"
  4. 3) "zhangsan"
  5. redis 127.0.0.1:6379> smembers tech
  6. 1) "jim"
  7. 2) "liming"
  8. 3) "wangwu"
  9. 4) "joe"

b)sismember

语法:sismember key member

解释:判断值是否是set的member。如果值是set的member返回1,否则,返回0

  1. redis 127.0.0.1:6379> sismember tech jim #jim 是set的member
  2. (integer) 1
  3. redis 127.0.0.1:6379> sismember tech jim001 #jim001 不是set的member
  4. (integer) 0

c)scard

语法:scard key

解释:返回set的member个数,如果set不存在,返回0

  1. redis 127.0.0.1:6379> scard tech  # tech 存在
  2. (integer) 4
  3. redis 127.0.0.1:6379> scard stud #stud 不存在
  4. (integer) 0
  5. redis 127.0.0.1:6379> scard stu
  6. (integer) 4

d)srandmember

语法:srandmember key

解释:从set中返回一个随机member

  1. redis 127.0.0.1:6379> srandmember stu
  2. "zhangsan"
  3. redis 127.0.0.1:6379> srandmember stu
  4. "zhangsan"
  5. redis 127.0.0.1:6379> srandmember stu
  6. "wangwu"
  7. redis 127.0.0.1:6379> srandmember stu
  8. "zhangsan01"

3、删除

a)spop

语法:spop key

解释:移除并返回一个随机member

  1. redis 127.0.0.1:6379> smembers stu #pop前
  2. 1) "zhangsan01"
  3. 2) "wangwu"
  4. 3) "lisi"
  5. 4) "zhangsan"
  6. redis 127.0.0.1:6379> spop stu  #移除一个随机member
  7. "lisi"
  8. redis 127.0.0.1:6379> smembers stu #pop后
  9. 1) "zhangsan01"<span style="white-space:pre">   </span>
  10. 2) "wangwu"
  11. 3) "zhangsan"

b)srem

语法:srem key member [member ...]

解释:移除一个或多个member

  1. redis 127.0.0.1:6379> smembers tech
  2. 1) "jim"
  3. 2) "liming"
  4. 3) "wangwu"
  5. 4) "joe"
  6. redis 127.0.0.1:6379> srem tech jim   #移除jim
  7. (integer) 1
  8. redis 127.0.0.1:6379> smembers tech
  9. 1) "liming"
  10. 2) "wangwu"
  11. 3) "joe"
  12. redis 127.0.0.1:6379> srem tech liming joe #移除多个member
  13. (integer) 2
  14. redis 127.0.0.1:6379> smembers tech
  15. 1) "wangwu"

c)smove

语法:smove source destination member

解释:将source中的member移动到destination

  1. redis 127.0.0.1:6379> smembers tech   #smove前
  2. 1) "wangwu"
  3. redis 127.0.0.1:6379> smembers stu
  4. 1) "zhangsan01"
  5. 2) "wangwu"
  6. 3) "zhangsan"
  7. redis 127.0.0.1:6379> smove stu tech zhangsan  #将zhangsan 从stu移动到tech
  8. (integer) 1
  9. redis 127.0.0.1:6379> smembers stu #smove后
  10. 1) "zhangsan01"
  11. 2) "wangwu"
  12. redis 127.0.0.1:6379> smembers tech
  13. 1) "wangwu"
  14. 2) "zhangsan"

4、其他

a)并集

语法:sunion key[key...]

解释:多个set的并集

  1. redis 127.0.0.1:6379> smembers stu
  2. 1) "zhangsan01"
  3. 2) "wangwu"
  4. redis 127.0.0.1:6379> sunion stu
  5. 1) "zhangsan01"
  6. 2) "wangwu"
  7. redis 127.0.0.1:6379> smembers tech
  8. 1) "wangwu"
  9. 2) "zhangsan"
  10. redis 127.0.0.1:6379> sunion stu tech
  11. 1) "zhangsan01"
  12. 2) "wangwu"
  13. 3) "zhangsan"

b)把并集结果存储到set

语法:sunionstore destination key [key ...]

解释:求多个set并集,并把结果存储到destination

  1. redis 127.0.0.1:6379> sunionstore same stu tech #把stu tech并集结果存储在union
  2. (integer) 3
  3. redis 127.0.0.1:6379> smembers union
  4. 1) "zhangsan01"
  5. 2) "wangwu"
  6. 3) "zhangsan"

c)交集

语法:sinter key[key...]

解释:多个set的交集

  1. redis 127.0.0.1:6379> smembers stu
  2. 1) "zhangsan01"
  3. 2) "wangwu"
  4. redis 127.0.0.1:6379> smembers tech
  5. 1) "wangwu"
  6. 2) "zhangsan"
  7. redis 127.0.0.1:6379> sinter stu tech
  8. 1) "wangwu"

d)把交集结果存储到指定set

语法:sinterstore destination key [key ...]

解释:把多个set的交集结果存储到destination

  1. redis 127.0.0.1:6379> sinterstore inter stu tech
  2. (integer) 1
  3. redis 127.0.0.1:6379> smembers inter
  4. 1) "wangwu"

e) set中在其他set中不存在member

语法:sdiff key[key ...]

  1. redis 127.0.0.1:6379>
  2. redis 127.0.0.1:6379> smembers stu
  3. 1) "zhangsan01"
  4. 2) "wangwu"
  5. redis 127.0.0.1:6379> smembers tech
  6. 1) "wangwu"
  7. 2) "zhangsan"
  8. redis 127.0.0.1:6379> sdiff stu tech
  9. 1) "zhangsan01"
  10. redis 127.0.0.1:6379> sdiff tech stu
  11. 1) "zhangsan"

f)把set中在其他set中不存在的member存储到新的set

语法:sdiffstore key[key...]

  1. redis 127.0.0.1:6379> sdiffstore diff stu tech
  2. (integer) 1
  3. redis 127.0.0.1:6379> smembers diff
  4. 1) "zhangsan01"

主要参考:

http://redis.io/commands#set

http://redis.io/topics/data-types

Redis系列-存储篇set主要操作函数小结的更多相关文章

  1. Redis系列-存储篇string主要操作函数小结

    通过上两篇的介绍,我们的redis服务器基本跑起来.db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简单且常用的string开始. 1.新增 a)se ...

  2. Redis系列-存储篇hash主要操作函数小结

    阳光透过玻璃,洒在身上,一杯暖茶在手,说不尽的安逸自得,让我有种想再写篇blog的冲动.上篇主要谈了string,这里谈谈hash吧!hash是一些列key value(field value)的映射 ...

  3. Redis系列-存储篇list主要操作函数小结

    在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素:列表最左端第一个元素. 表尾元素:列表最右端的 ...

  4. Redis系列-存储篇list主要操作函数小结(转)

    在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素:列表最左端第一个元素. 表尾元素:列表最右端的 ...

  5. Redis系列-存储篇sorted set主要操作命令

    Redis系列-存储篇sorted set主要操作函数小结 redis支持有序集合,即sorted set.sorted set在set的基础上,增加了排序属性,是set的升级版.这里简要谈谈sort ...

  6. Redis系列-存储篇string主要操作命令

    Redis系列-存储篇string主要操作命令 通过上两篇的介绍,我们的redis服务器基本跑起来.db都具有最基本的CRUD功能,我们沿着这个脉络,开始学习redis丰富的数据结构之旅,当然先从最简 ...

  7. Redis系列-存储篇list主要操作命令

    Redis系列-存储篇list主要操作命令小结 在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出. 表头元素 ...

  8. Redis系列-存储篇sorted set主要操作函数小结

    redis支持有序集合,即sorted set.sorted set在set的基础上,增加了排序属性,是set的升级版.这里简要谈谈sorted set的常用函数: 1)insert a)  zadd ...

  9. Redis系列-存储hash主要操作命令

    Redis系列-存储篇hash主要操作函数小结 hash是一些列key value(field value)的映射表.常常用其存储一些对象实例.相对于把一个对象的各个字段存储为string,存储为ha ...

随机推荐

  1. MonkeyRunner学习(3)脚本编辑

    除了cmd直接操作手机,也可以编辑好脚本后,运行脚本,一次操作多个脚本命令 a) 新建py格式脚本,如iReader.py b) 编辑脚本 #导入模块 from com.android.monkeyr ...

  2. Jquery的普通事件和on的委托事件小案例

    以click的事件为例: 普通的绑定事件:$('.btn').click(function(){})绑定 on绑定事件:$(document).on('click','.btn2',function( ...

  3. POJ 3468 线段树裸题

    这些天一直在看线段树,因为临近期末,所以看得断断续续,弄得有些知识点没能理解得很透切,但我也知道不能钻牛角尖,所以配合着刷题来加深理解. 然后,这是线段树裸题,而且是最简单的区间增加与查询,我参考了A ...

  4. hdu4418(概率dp + 高斯消元)

    应该是一个入门级别的题目. 但是有几个坑点. 1. 只选择x能到达的点作为guass中的未知数. 2. m可能大于n,所以在构建方程组时未知数的系数不能直接等于,要+= 3.题意貌似说的有问题,D为- ...

  5. Android控件之EditText(输入文本框控件)

    一.EditText控件概述 EditText是一个非常重要的组件,可以说他是用户和Android应用进行数据传输窗口  有了他就等于有了一扇和Android应用传输的门,通过他用户可以把数据传输给A ...

  6. eclipse里maven install时,报错提示jdk为无效的目标版本:1.7

    http://blog.csdn.net/wabiaozia/article/details/51733372 ************************************ 报错提示: [ ...

  7. 记录---base64

    什么是Base64呢? Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2049,上面有MIME的详细规范.Base64编码可用于在HTTP环境下 ...

  8. Lua中点和冒号的区别

    在使用lua设计类时'.'和':'的区别主要在于使用'.'必须手动加self参数,使用':',可以隐藏这个参数,使用'.'调用使用':'定义的函数时,要注意,函数的第一个参数为self,如 funct ...

  9. mysql: 两个字段合并,字符时间转时间戳,别名字段作为where条件查询

    有字段,a,b: a存的是:2016-10-10 b存的是:10:15:30 mysql将字段合并: concat(a, ' - ', b)  或者 concat(a, ' ', b) 字符时间转时间 ...

  10. perl中->和=>作用

    -> 用法 -> 有两种用法,都和解引用有关. 第一种用法,就是解引用. 根据 -> 后面跟的符号的不同,解不同类型的引用, ->[] 表示解数组引用,->{} 表示解散 ...