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

转载 2016年05月31日 12:47:37
最近,总是以“太忙“为借口,很久没有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中只会保留一份。

[plain] view plain copy
  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

[plain] view plain copy
  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

[plain] view plain copy
  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

[plain] view plain copy
  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

[plain] view plain copy
  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

[plain] view plain copy
  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

[plain] view plain copy
  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

[plain] view plain copy
  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的并集

[plain] view plain copy
  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 

[plain] view plain copy
  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的交集

[plain] view plain copy
  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 

[plain] view plain copy
  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 ...]

[plain] view plain copy
  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...]

[plain] view plain copy
  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系列-存储篇sorted set主要操作函数小结 .

redis支持有序集合,即sorted set。sorted set在set的基础上,增加了排序属性,是set的升级版。这里简要谈谈sorted set的常用函数: 1)insert a)  za...
  • txj236
  • txj236
  • 2015年06月01日 11:02
  • 214

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

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

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

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

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

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

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

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

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

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

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

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

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

http://blog.csdn.net/love__coder/article/details/8274886 阳光透过玻璃,洒在身上,一杯暖茶在手,说不尽的安逸自得,让我有种想再写篇bl...
  • Ltw518
  • Ltw518
  • 2016年02月26日 10:57
  • 324

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

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

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

在总结list之前,先要弄明白几个跟list相关的概念: 列表:一个从左到右的队列,个人理解更类似于一个栈,常规模式下,先进列表的元素,后出。 表头元素:列表最左端第一个元素。 表尾元素:列表最...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Redis系列-存储篇set主要操作函数小结
举报原因:
原因补充:

(最多只允许输入30个字)