• 張近東代表建議,用AI、區塊鏈技術打造數據安全“護城河” 2018-08-18
  • 清明忆先烈 习近平这样传承“红色基因” 2018-08-18
  • 第二届福建省大学生文化创新创意大赛落幕 2018-08-18
  • 乘客突发脑梗 611路司机忙送医一直等到家属到 2018-08-18
  • 中国新一代百亿亿次超级计算机“天河三号”原型机首次亮相[组图] 2018-08-17
  • “动静”结合丨带你感受不一样的实爆训练场 2018-08-17
  • 侠客岛:拿什么拯救你,不学普通话的香港年轻人 2018-08-17
  • 机构改革是一场政治考验 2018-08-17
  • 简讯:韩国前总统朴槿惠一审被判24年有期徒刑 2018-08-16
  • 人民网评:走向大洋,呼唤现代化的中国海军 2018-08-16
  • 北京成立学生申诉处理委员会-地方新闻-时政频道-中工网 2018-08-16
  • 虽胜不足喜!鲁能一隐忧不治愈,恐高开低走 2018-08-16
  • 小鱼儿戴胡可帽子似贵妇 临睡之前表白妈妈嘴超甜 2018-08-16
  • “北京8分钟”融入人工智能 通过互联网与国人互动 2018-08-16
  • 四部门调整完善新能源汽车推广应用财政补贴政策 2018-08-15
  • Redis系列-存储篇set主要操作函数小结

    栏目: redis 发布于: 2014-01-19 13:35:41

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

    1、增加

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

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

    [root@xsf001 ~]# redis-cli 
    redis 127.0.0.1:6379> sadd stu zhangsan lisi wangwu #新增
    (integer) 3
    redis 127.0.0.1:6379> smembers stu    #得到set的所有member
    1) "wangwu"
    2) "lisi"
    3) "zhangsan"
    redis 127.0.0.1:6379> sadd stu zhangsan #增加存在的member
    (integer) 0
    redis 127.0.0.1:6379> smembers stu
    1) "wangwu"
    2) "lisi"
    3) "zhangsan"
    redis 127.0.0.1:6379> sadd tech wangwu liming joe
    (integer) 3
    redis 127.0.0.1:6379> sadd tech jim
    (integer) 1
    redis 127.0.0.1:6379> smembers tech
    1) "jim"
    2) "liming"
    3) "wangwu"
    4) "joe"

    2、查询

    a)smembers

    语法:smembers key

    解释:获取set中的所有member

    redis 127.0.0.1:6379> smembers stu
    1) "wangwu"
    2) "lisi"
    3) "zhangsan"
    redis 127.0.0.1:6379> smembers tech
    1) "jim"
    2) "liming"
    3) "wangwu"
    4) "joe"
    b)sismember

    语法:sismember key member

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

    redis 127.0.0.1:6379> sismember tech jim #jim 是set的member
    (integer) 1
    redis 127.0.0.1:6379> sismember tech jim001 #jim001 不是set的member
    (integer) 0
    c)scard

    语法:scard key

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

    redis 127.0.0.1:6379> scard tech  # tech 存在
    (integer) 4
    redis 127.0.0.1:6379> scard stud #stud 不存在
    (integer) 0
    redis 127.0.0.1:6379> scard stu
    (integer) 4
    d)srandmember

    语法:srandmember key

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

    redis 127.0.0.1:6379> srandmember stu
    "zhangsan"
    redis 127.0.0.1:6379> srandmember stu
    "zhangsan"
    redis 127.0.0.1:6379> srandmember stu
    "wangwu"
    redis 127.0.0.1:6379> srandmember stu
    "zhangsan01"
    3、删除

    a)spop

    语法:spop key

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

    redis 127.0.0.1:6379> smembers stu #pop前
    1) "zhangsan01"
    2) "wangwu"
    3) "lisi"
    4) "zhangsan"
    redis 127.0.0.1:6379> spop stu  #移除一个随机member
    "lisi"
    redis 127.0.0.1:6379> smembers stu #pop后
    1) "zhangsan01"<span style="white-space:pre">	</span>
    2) "wangwu"
    3) "zhangsan"
    b)srem

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

    解释:移除一个或多个member

    redis 127.0.0.1:6379> smembers tech
    1) "jim"
    2) "liming"
    3) "wangwu"
    4) "joe"
    redis 127.0.0.1:6379> srem tech jim   #移除jim
    (integer) 1
    redis 127.0.0.1:6379> smembers tech   
    1) "liming"
    2) "wangwu"
    3) "joe"
    redis 127.0.0.1:6379> srem tech liming joe #移除多个member
    (integer) 2
    redis 127.0.0.1:6379> smembers tech
    1) "wangwu"
    c)smove

    语法:smove source destination member

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

    redis 127.0.0.1:6379> smembers tech   #smove前
    1) "wangwu"
    redis 127.0.0.1:6379> smembers stu
    1) "zhangsan01"
    2) "wangwu"
    3) "zhangsan"
    redis 127.0.0.1:6379> smove stu tech zhangsan  #将zhangsan 从stu移动到tech
    (integer) 1
    redis 127.0.0.1:6379> smembers stu #smove后
    1) "zhangsan01"
    2) "wangwu"
    redis 127.0.0.1:6379> smembers tech
    1) "wangwu"
    2) "zhangsan"
    4、其他

    a)并集

    语法:sunion key[key...]

    解释:多个set的并集

    redis 127.0.0.1:6379> smembers stu
    1) "zhangsan01"
    2) "wangwu"
    redis 127.0.0.1:6379> sunion stu
    1) "zhangsan01"
    2) "wangwu"
    redis 127.0.0.1:6379> smembers tech
    1) "wangwu"
    2) "zhangsan"
    redis 127.0.0.1:6379> sunion stu tech
    1) "zhangsan01"
    2) "wangwu"
    3) "zhangsan"
    b)把并集结果存储到set

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

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

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

    语法:sinter key[key...]

    解释:多个set的交集

    redis 127.0.0.1:6379> smembers stu
    1) "zhangsan01"
    2) "wangwu"
    redis 127.0.0.1:6379> smembers tech
    1) "wangwu"
    2) "zhangsan"
    redis 127.0.0.1:6379> sinter stu tech
    1) "wangwu"
    d)把交集结果存储到指定set

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

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

    redis 127.0.0.1:6379> sinterstore inter stu tech
    (integer) 1
    redis 127.0.0.1:6379> smembers inter
    1) "wangwu"
    e) set中在其他set中不存在member

    语法:sdiff key[key ...]

    redis 127.0.0.1:6379> 
    redis 127.0.0.1:6379> smembers stu
    1) "zhangsan01"
    2) "wangwu"
    redis 127.0.0.1:6379> smembers tech
    1) "wangwu"
    2) "zhangsan"
    redis 127.0.0.1:6379> sdiff stu tech
    1) "zhangsan01"
    redis 127.0.0.1:6379> sdiff tech stu
    1) "zhangsan"
    f)把set中在其他set中不存在的member存储到新的set

    语法:sdiffstore key[key...]

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


    本站文章除注明转载外,均为本站原创或编译?;队魏涡问降淖?,但请务必注明出处。
    转载请注明:文章转载自 七星彩票平台
    本文标题:Redis系列-存储篇set主要操作函数小结
    IT技术书籍推荐:
    算法导论(原书第3版)
    算法导论(原书第3版)
    Thomas H.Cormen (作者), Charles E.Leiserson (作者), Ronald L.Rivest (作者), Clifford Stein (作者), 殷建平 (译者), 徐云 (译者), 王刚 (译者), 等 (译者)
    《算法导论(原书第3版)》内容简介:在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性?!端惴ǖ悸?原书第3版)》将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。全书选材经典、内容丰富、结构合理、逻辑清晰,对本科生的数据结构课程和研究生的算法课程都是非常实用的教材,在IT专业人员的职业生涯中,《算法导论(原书第3版)》也是一本案头必备的参考书或工程实践手册。