1. 程式人生 > >使用Jedis操作Redis-使用Java語言在客戶端操作---set型別

使用Jedis操作Redis-使用Java語言在客戶端操作---set型別

原文地址:http://www.cnblogs.com/lixianyuan-org/p/9509696.html

  1 //測試set資料型別
  2     /**
  3      *  在Redis中,我們可以將Set型別看作為沒有排序的字元集合,和List型別一樣,我們也可以在該型別的資料值上執行新增、刪除或判斷某一元素是否存在等操作。需要說明的是,這些操作的時間複雜度為O(1),即常量時間內完成次操作。Set可包含的最大元素數量是4294967295。
  4      *   和List型別不同的是,Set集合中不允許出現重複的元素,如果多次新增相同元素,Set中將僅保留該元素的一份拷貝
  5      * @throws Exception
  6      */
  7     @Test
  8     public void testSet() throws Exception {
  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);//true
 19         
 20         //#通過smembers命令檢視插入的結果,從結果可以,輸出的順序和插入順序無關。
 21         Set<String> 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: 4
 33         //檢視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= b
 43         
 44         //檢視移出後set的成員資訊
 45         Set<String> 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= 2
 51         
 52         //檢視移出後的輸出結果。
 53         Set<String> 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);//1
 63         //再次將a從myset移到myset2,由於此時a已經不是myset的成員了,因此移動失敗並返回0。
 64         Long smove2 =jedis.smove("myset3", "myset4", "a");
 65         System.out.println(smove2);//0
 66         
 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<String> 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);//2
 86         
 87         //檢視一下sdiffstore的操作結果。
 88         Set<String> result = jedis.smembers("diffkey");
 89         System.out.println(result);//[b, d]
 90         
 91         //交集
 92         //從之前準備的資料就可以看出,這三個Set的成員交集只有c。
 93         Set<String> 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 = 1
 99         
100         //#檢視一下sinterstore的操作結果。
101         System.out.println(jedis.smembers("interkey"));//[c]
102         
103         //獲取3個集合中的成員的並集
104         Set<String> 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= 5
110         
111         //將3個集合中成員的並集儲存到unionkey關聯的set中,並返回並整合員的數量。
112         Long result2 = jedis.sunionstore("unionkey", "myset5","myset6","myset7");
113         System.out.println(result2);//5
114         //檢視一下suiionstore的操作結果。
115         System.out.println(jedis.smembers("unionkey"));//[a, b, c, d, e]
116     }
117     

複製程式碼