热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

jedis操作set_使用Jedis操作Redis使用Java语言在客户端操作set类型

1测试set数据类型2**3*在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在该类型的数据值

1 //测试set数据类型

2 /**

3 * 在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。需要说明的是,这些操作的时间复杂度为O(1),即常量时间内完成次操作。Set可包含的最大元素数量是4294967295。4 * 和List类型不同的是,Set集合中不允许出现重复的元素,如果多次添加相同元素,Set中将仅保留该元素的一份拷贝5 *@throwsException6 */

7 @Test8 public void testSet() throwsException {9 //插入测试数据,由于该键myset之前并不存在,因此参数中的三个成员都被正常插入。

10 Long sadd = jedis.sadd("myset", "a","b","c");11 System.out.println("myset中的元素:"+jedis.smembers("myset"));//myset中的元素:[a, b, c]12 //由于参数中的a在myset中已经存在,因此本次操作仅仅插入了d和e两个新成员

13 Long sadd2 = jedis.sadd("myset", "a","d","e");14 System.out.println("myset中的元素:"+jedis.smembers("myset"));//myset中的元素:[a, b, c, d, e]15

16 //判断a是否已经存在,返回值为true表示存在,返回值为false表示不存在

17 Boolean sismember = jedis.sismember("myset", "a");18 System.out.println(sismember);//true19

20 //#通过smembers命令查看插入的结果,从结果可以,输出的顺序和插入顺序无关。

21 Set smembers = jedis.smembers("myset");22 System.out.println(smembers);//[a, b, c, d, e]23

24

25 //获取Set集合中元素的数量。

26 Long scard = jedis.scard("myset");27 System.out.println(scard);//5

28

29 System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");30 //====================》》》》》>>>>>>>>

31 Long sadd3 = jedis.sadd("myset2", "a","b","c","d");32 System.out.println("sadd3: "+sadd3);//sadd3: 433 //查看Set中成员的位置。查看插入结果

34 System.out.println(jedis.smembers("myset2"));//[a, b, c, d]35

36 //随机返回某一成员

37 String srandmember = jedis.srandmember("myset2");38 System.out.println("srandmember= "+srandmember);//srandmember= b 这个结果是随机的39

40 //Set中尾部的成员b被移出并返回,事实上b并不是之前插入的第一个或最后一个成员。弹出一个元素

41 String spop = jedis.spop("myset2");42 System.out.println("spop= "+spop);//spop= b43

44 //查看移出后set的成员信息

45 Set smenmber3 = jedis.smembers("myset2");46 System.out.println("smenmber3= "+smenmber3);smenmber3= [a, c, d]47

48 //从Set中移出a、d和f三个成员,其中f并不存在,因此只有a和d两个成员被移出,返回为2。

49 Long srem = jedis.srem("myset2", "a","d","f");50 System.out.println("srem= "+srem);//srem= 251

52 //查看移出后的输出结果。

53 Set smember4 = jedis.smembers("myset2");54 System.out.println("smember4= "+smember4);//smember4= [c]

55

56 System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");57 //=====================>>>>>>>

58 jedis.sadd("myset3", "a","b");59 jedis.sadd("myset4", "c","d");60 //将a从myset3移到myset4,从结果可以看出移动成功

61 Long smove = jedis.smove("myset3", "myset4", "a");62 System.out.println(smove);//163 //再次将a从myset移到myset2,由于此时a已经不是myset的成员了,因此移动失败并返回0。

64 Long smove2 =jedis.smove("myset3", "myset4", "a");65 System.out.println(smove2);//066

67 //分别查看myse3和myset4的成员,确认移动是否真的成功。

68 System.out.println("myset3: "+jedis.smembers("myset3"));//myset3: [b]

69 System.out.println("myset4: "+jedis.smembers("myset4"));//myset4: [a, c, d]

70

71

72 System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");73 //================================>>>>>>>>>>>>>>>

74 jedis.sadd("myset5", "a","b","c","d");75 jedis.sadd("myset6","c");76 jedis.sadd("myset7", "a","c","e");77

78 //差集,比较顺序,从左到右79 //myset5和myset6相比,a、b和d三个成员是两者之间的差异成员。再用这个结果继续和myset7进行差异比较,b和d是myset7不存在的成员。

80 Set sdiff = jedis.sdiff("myset5","myset6","myset7");81 System.out.println(sdiff);//[d, b]82

83 //将3个集合的差异成员存在在diffkey关联的Set中,并返回插入的成员数量。

84 Long sdiffstore = jedis.sdiffstore("diffkey","myset5", "myset6","myset7");85 System.out.println(sdiffstore);//286

87 //查看一下sdiffstore的操作结果。

88 Set result = jedis.smembers("diffkey");89 System.out.println(result);//[b, d]90

91 //交集92 //从之前准备的数据就可以看出,这三个Set的成员交集只有c。

93 Set sinter = jedis.sinter("myset5","myset6","myset7");94 System.out.println(sinter);//[c]95

96 //将3个集合中的交集成员存储到与interkey关联的Set中,并返回交集成员的数量。

97 Long sinterstore = jedis.sinterstore("interkey", "myset5","myset6","myset7");98 System.out.println("sinterstore = "+sinterstore);//sinterstore = 199

100 //#查看一下sinterstore的操作结果。

101 System.out.println(jedis.smembers("interkey"));//[c]102

103 //获取3个集合中的成员的并集

104 Set sunion = jedis.sunion("myset5","myset6","myset7");105 System.out.println("sunion="+sunion);//sunion=[a, b, c, d, e]106

107 //获取3个集合中的成员的并集。

108 Long sunionstore = jedis.sunionstore("unionkey", "myset5","myset6","myset7");109 System.out.println("sunionstore= "+sunionstore);//sunionstore= 5110

111 //将3个集合中成员的并集存储到unionkey关联的set中,并返回并集成员的数量。

112 Long result2 = jedis.sunionstore("unionkey", "myset5","myset6","myset7");113 System.out.println(result2);//5114 //查看一下suiionstore的操作结果。

115 System.out.println(jedis.smembers("unionkey"));//[a, b, c, d, e]

116 }117



推荐阅读
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文整理了Java中java.lang.NoSuchMethodError.getMessage()方法的一些代码示例,展示了NoSuchMethodErr ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 电话号码的字母组合解题思路和代码示例
    本文介绍了力扣题目《电话号码的字母组合》的解题思路和代码示例。通过使用哈希表和递归求解的方法,可以将给定的电话号码转换为对应的字母组合。详细的解题思路和代码示例可以帮助读者更好地理解和实现该题目。 ... [详细]
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 本文讨论了微软的STL容器类是否线程安全。根据MSDN的回答,STL容器类包括vector、deque、list、queue、stack、priority_queue、valarray、map、hash_map、multimap、hash_multimap、set、hash_set、multiset、hash_multiset、basic_string和bitset。对于单个对象来说,多个线程同时读取是安全的。但如果一个线程正在写入一个对象,那么所有的读写操作都需要进行同步。 ... [详细]
author-avatar
手机用户2502857101
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有