使用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的差集 而不是和我预想的是返回除交集外的所有数据
**/
}