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