使用redis操作set集合的學習,希望有所幫助
public static void main(String[] args) { Jedis jedis = new Jedis("localhost", 6379); //測試jedis連接 //System.out.println(jedis.ping()); //操作set集合 testSet(jedis); }
具體的方法
/*** *@author zh *@Date 2020/12/31 *@MethodNotes jedis操作Set集合 **/ public static void testSet(Jedis jedis){ /*** *@author zh *@Date 2020/12/31 *@MethodNotes 首先我們要創建一個set集合 * 那么創建好了set集合也要知道在redis中是用什么命令去讀取set集合 * 在添加成功之后可以先使用 type key去查看這個key是什么類型的 * jedis.sadd("user","aaa","bbb","ccc"); * 當上面的代碼執行完后,如果type user 那么就會返回一個set * set的查詢命令為 smembers key * * 這個是java里面獲取set集合的所有元素的方法 * jedis.smembers("user"); * * set集合刪除一個值為aaa的元素 也可以寫多個刪除(jedis.srem("user","aaa","bbb");) * jedis.srem("user","aaa"); * * 隨機出棧set里的一個元素 * jedis.spop("user"); * * 獲取set中元素個數 * jedis.scard("user"); * * 將aaa從set集合user中,剪切到set集合in中 * jedis.smove("user","in","aaa"); * 測試代碼: * jedis.sadd("user","aaa","bbb","ccc"); * jedis.sadd("in","ddd","eee","fff"); * jedis.smove("user","in","aaa"); * Set<String> user = jedis.smembers("user"); * Set<String> in = jedis.smembers("in"); * System.out.println(user.toString()); * System.out.println(in.toString()); * * 獲取set集合user和set集合in的交集 * jedis.sinter("user", "in"); * * 測試代碼: * jedis.sadd("user","aaa","bbb","ccc"); * jedis.sadd("in","aaa","eee","fff"); * Set<String> sinter = jedis.sinter("user", "in"); * System.out.println(sinter); * * 獲取set集合user和set集合in的並集 * jedis.sunion("user", "in"); * * 測試代碼 * jedis.sadd("user","aaa","bbb","ccc"); * jedis.sadd("in","aaa","eee","fff"); * Set<String> sunion = jedis.sunion("user", "in"); * System.out.println(sunion); * * 獲取set集合user和set集合in的差集 * jedis.sdiff("in", "user"); * * 測試代碼 * jedis.del("user"); * jedis.del("in"); * jedis.sadd("user","aaa","bbb","ccc"); * jedis.sadd("in","aaa","eee","fff"); * Set<String> sdiff = jedis.sdiff("in", "user"); * System.out.println(sdiff); * 經過測試,只會獲取到集合in的差集也就是key1 * 可能是測試方法不對,也有可能是這個方法只是 比較key1和key2之后只返回key1的差集 而不是和我預想的是返回除交集外的所有數據 **/ }