Redis入门之 redis set集合的操作

来源:互联网 发布:红五星3d图库永久域名 编辑:程序博客网 时间:2024/05/16 01:00
[java] view plain copy
  1. /** 
  2.      * @author jackson 
  3.      * @date 2015-12-21 上午10:54:49 
  4.      * @return void 
  5.      */  
  6.     @Test  
  7.     public void jedisSet(){  
  8.         //sadd  去除重复的元素  
  9.         jedis.sadd("jedisSet""1 2 3 4 5 5".split(" "));  
  10.         Set<String> s = jedis.smembers("jedisSet"); // 返回集合中的所有元素  
  11.         System.out.println("sadd 返回值:"+s);//返回值:[1, 2, 3, 4, 5]  
  12.           
  13.         //scard 返回集合中元素的个数 当key 不存在时返回 0   
  14.         long n = jedis.scard("jedisSet");// 返回集合中元素的个数 当key 不存在时返回 0   
  15.         System.out.println("jedisSet 集合中元素的个数:"+n);  
  16.           
  17.         //sdiff  返回给定的几个集合的差集  
  18.         jedis.sadd("jedisSet1""1 2 3 4 5 5".split(" "));  
  19.         jedis.sadd("jedisSet2""5 6 7 8".split(" "));  
  20.         s = jedis.sdiff("jedisSet1 jedisSet2".split(" "));  
  21.         System.out.println("返回给定的几个集合的差集: "+s);  
  22.           
  23.         //sdiffstore 类似于 sdiff命令,将结果集放入了给定的集合中,返回给定集合的长度 如果给定集合已经存在则对其进行覆盖  
  24.         n = jedis.sdiffstore("jedisSet3""jedisSet1 jedisSet2".split(" "));  
  25.         s = jedis.smembers("jedisSet3"); // 返回集合中的所有元素  
  26.         System.out.println("存放差集集合的长度:"+n + "差集结果集:"+s);  
  27.           
  28.         //sinter 返回所有给定集合的交集  
  29.         s= jedis.sinter("jedisSet1 jedisSet2".split(" "));  
  30.         System.out.println("返回给定的几个集合的交集: "+s);  
  31.           
  32.         //sinterstore 类似于 sinter命令,将结果集放入了给定的集合中,返回给定集合的长度 如果给定集合已经存在则对其进行覆盖  
  33.         n = jedis.sinterstore("jedisSet4""jedisSet1 jedisSet2".split(" "));  
  34.         s = jedis.smembers("jedisSet4"); // 返回集合中的所有元素  
  35.         System.out.println("存放交集集合的长度:"+n + "交集结果集:"+s);  
  36.           
  37.         //sismember 判断 某个 成员是否在 某个key中  返回 true 或 false  
  38.         jedis.sadd("jedisSet5""r t d s e t".split(" "));  
  39.         Boolean flag = jedis.sismember("jedisSet5""r");  
  40.         System.out.println("判断 某个 成员是否在 某个key中"+flag);  
  41.           
  42.         //smvoe  将  集合srckey中的成员 移动到dstkey  原则:集合中的元素不重复  
  43.         jedis.sadd("jedisSet6""啊 的 额 人 他 去 就 哦".split(" "));  
  44.         jedis.sadd("jedisSet7""l d e q f j".split(" "));  
  45.         n = jedis.smove("jedisSet6""jedisSet7""啊");  
  46.         Set<String> sSet = jedis.smembers("jedisSet6"); // 返回集合中的所有元素  
  47.         Set<String> dSet = jedis.smembers("jedisSet7"); // 返回集合中的所有元素  
  48.         System.out.println("成功1 失败0 "+n+" 源集合 "+sSet+" 目标集合"+dSet);//源集合 [哦, 的, 去, 他, 就, 额, 人] 目标集合[d, e, 啊, l, j, q, f]  
  49.           
  50.         //spop 随机移除集合中的元素并返回  
  51.         jedis.sadd("jedisSet8""啊 的 额 人 他 去 就 哦".split(" "));  
  52.         String s8 = jedis.spop("jedisSet8");//移除并返回集合中的一个随机元素。  
  53.         Set<String> jedisSet8 = jedis.smembers("jedisSet8"); // 返回集合中的所有元素  
  54.         System.out.println(s8+" "+jedisSet8);  
  55.        
  56.         //srandmember(key) 随机返回集合中的一个元素,不删除  
  57.         jedis.sadd("jedisSet9""啊 的 额 人 他 去 就 哦".split(" "));  
  58.         String s9 = jedis.srandmember("jedisSet9");  
  59.         Set<String> jedisSet9 = jedis.smembers("jedisSet9"); // 返回集合中的所有元素  
  60.         System.out.println(s9+" "+jedisSet9);  
  61.           
  62.         //srandmember(key,count) 随机返回集合中的一个元素,不删除,count > 0 返回指定个数的集合元素,不重复,如果count 大于集合的长度,那只返回整个集合  
  63.         jedis.sadd("jedisSet10""啊 的 额 人 他 去 就 哦".split(" "));  
  64.         List<String> setList = jedis.srandmember("jedisSet10",10);  
  65.         Set<String> jedisSet10 = jedis.smembers("jedisSet10"); // 返回集合中的所有元素  
  66.         System.out.println("集合中的值:"+jedisSet10+" 随机返回的集合: "+setList);//集合中的值:[哦, 啊, 的, 去, 他, 就, 额, 人] 随机返回的集合: [哦, 啊, 的, 去, 他, 额, 就, 人]  
  67.           
  68.         jedis.sadd("jedisSet11""啊 的 额 人 他 去 就 哦".split(" "));  
  69.         List<String> setListf = jedis.srandmember("jedisSet11",-10);//count < 0 随机返回 指定count 绝对值个元素,如果大于集合长度,则继续返回,允许重复,  
  70.         Set<String> jedisSet11 = jedis.smembers("jedisSet11"); // 返回集合中的所有元素  
  71.         System.out.println("集合中的值:"+jedisSet11+" 随机返回的集合: "+setListf);//集合中的值:[哦, 啊, 的, 去, 他, 就, 额, 人] 随机返回的集合: [哦, 额, 的, 哦, 的, 他, 人, 人, 哦, 的]  
  72.           
  73.         //srem  移除集合key 中的一个或多个member 元素,不存在的member 元素会被忽略。当key 不是集合类型,返回一个错误。  
  74.         jedis.sadd("jedisSet12""啊 的 额 人 他 去 就 哦".split(" "));  
  75.         Set<String> jedisSet12bef = jedis.smembers("jedisSet12"); // 返回集合中的所有元素  
  76.         n = jedis.srem("jedisSet12""啊 的 额 人 ".split(" "));// n = 4 表示移除成功元素的个数  
  77.         Set<String> jedisSet12after = jedis.smembers("jedisSet12"); // 返回集合中的所有元素  
  78.         System.out.println(n+" jedisSet12 移除前key中的元素: "+jedisSet12bef+"jedisSet12 移除后key中的元素: "+jedisSet12after);//4 jedisSet12 移除前key中的元素: [哦, 啊, 的, 去, 他, 就, 额, 人]jedisSet12 移除后key中的元素: [哦, 去, 他, 就]  
  79.           
  80.         //SUNION 返回几个集合的并集  
  81.         jedis.sadd("jedisSet13""啊 的 额 人 他 去 就 哦".split(" "));  
  82.         jedis.sadd("jedisSet14""1 2 3 4".split(" "));  
  83.         Set<String> sunionSet = jedis.sunion("jedisSet13 jedisSet14".split(" "));  
  84.         System.out.println("jedisSet13  jedisSet14并集:"+sunionSet);  
  85.           
  86.         //sunionstore  
  87.         n = jedis.sunionstore("jedisSet15""jedisSet13 jedisSet14".split(" "));// 返回并集集合的长度  
  88.         sunionSet = jedis.smembers("jedisSet15");  
  89.         System.out.println(n+ " jedisSet13  jedisSet14并集:"+sunionSet);  
  90.         //sscan 详细信息请参考SCAN 命令。  
  91.     }