zoukankan      html  css  js  c++  java
  • Redis学习笔记(5)-Set

    package cn.com;
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Set;
    
    import redis.clients.jedis.Jedis;
    
    /**
     * 集合的所有操作方法
     * 
     * */
    public class Redis_Set {
    	public static Jedis redis = new Jedis("localhost", 6379);// 连接redis
    	
    	public static void zadd(){
    		Map<String,Double> map=new HashMap<String,Double>();
    		redis.zadd("user",map);
    		 
    	}
    	
    	
    	/**
    	 * 将一个或多个  元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
    	 * */
    	public static void sadd(){
    		redis.flushDB();//清除数据
    		redis.sadd("user", "a","b","c","d","e","f");
    		Set<String> setList=redis.smembers("user");
    		for(String s:setList){
    			System.out.println(s);
    		}
    	}
    	
    	/**
    	 * SCARD key
    	 * 返回集合 key 的基数(集合中元素的数量)
    	 * */
    	public static void scard(){
    		redis.flushDB();//清除数据
    		redis.sadd("user", "a","b","c","d","e","f");
    		Long number=redis.scard("user");
    		System.out.println(number);
    	}
    	
    	
    	/**
    	 * SDIFF key [key ...] 求差集
    	 * 返回一个集合的全部成员,该集合是所有给定集合之间的差集。
    	 * 不存在的 key 被视为空集。
    	 * 相当月user减去user1 剩下的 user 元素
    	 * */
    	public static void sdiff(){
    		redis.flushDB();//清除数据
    		redis.sadd("user", "a","b","c","z");
    		redis.sadd("user1", "a","c","d","f");
    		
    		Set<String> setList=redis.sdiff("user","user1");
    		for(String s:setList){
    			System.out.println(s);
    		}
    	}
    	
    	/**
    	 * SDIFFSTORE destination key [key ...]求差集 将结果放入新的结合中
    	 * 这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。
    	 * 如果 destination 集合已经存在,则将其覆盖。
    	 * destination 可以是 key 本身。
    	 * N 是所有给定集合的成员数量之和.
    	 * 例如:以下例子是 取出 user中在user1 不包含的元素 也就是(zzz)在user1 中不存在
    	 * */
    	public static void sdiffstore(){
    		redis.flushDB();//清除数据
    		redis.sadd("user", "a","b","c","zzzz");
    		redis.sadd("user1", "a","b","c","d","e","f");
    	 
    		long size=redis.sdiffstore("newuser","user","user1");
    		System.out.println("size:"+size);
    		Set<String> setList=redis.smembers("newuser");
    		for(String s:setList){
    			System.out.println(s);
    		}
    	}
    	
    	/**
    	 *  SINTER key [key ...] 求交集
    	 * 返回一个集合的全部成员,该集合是所有给定集合的交集。
    	 * 不存在的 key 被视为空集。
    	 * 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
    	 * */
    	public static void sinter(){
    		redis.flushDB();//清除数据
    		redis.sadd("user", "a","b","c","zzzz");
    		redis.sadd("user1", "a","b","c","d","e","f");
    		Set<String> setList=redis.sinter("user","user1");
    		for(String s:setList){
    			System.out.println(s);
    		}
    	}
    	
    	/**
    	 *  SINTER key [key ...] 求交集 跟sinter区别在于是将差集的结果集放入新的数组中 如下的:newuser
    	 * 返回一个集合的全部成员,该集合是所有给定集合的交集。
    	 * 不存在的 key 被视为空集。
    	 * 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
    	 * */
    	public static void sinterstore(){
    		redis.flushDB();//清除数据
    		redis.sadd("user", "a","b","c","zzzz");
    		redis.sadd("user1", "a","b","c","d","e","f");
    		long size=redis.sinterstore("newuser","user","user1");
    		System.out.println("交集的大小:"+size);
    		
    		Set<String> setList=redis.smembers("newuser");
    		for(String s:setList){
    			System.out.println(s);
    		}
    	}
    	
    	/**
    	 * SUNION key [key ...]
    	 * 返回一个集合的全部成员,该集合是所有给定集合的并集。
    	 * 不存在的 key 被视为空集。
    	 * */
    	public static void sunion(){
    		redis.flushDB();//清除数据
    		redis.sadd("user", "a","b","c","zzzz");
    		redis.sadd("user1", "a","b","c","d","e","f");
    		Set<String> setList=redis.sunion("user","user1");
    	
    		for(String s:setList){
    			System.out.println(s);
    		}
    	}
    	
    	/**
    	 * SUNION key [key ...]  将两个集合的并集放入新的结合中 newuser
    	 * 返回一个集合的全部成员,该集合是所有给定集合的并集。
    	 * 不存在的 key 被视为空集。
    	 * */
    	public static void sunionstore(){
    		redis.flushDB();//清除数据
    		redis.sadd("user", "a","b","c","zzzz");
    		redis.sadd("user1", "a","b","c","d","e","f");
    		long l=redis.sunionstore("newuser","user","user1");
    		Set<String> setList=redis.smembers("newuser");
    		for(String s:setList){
    			System.out.println(s);
    		}
    	}
    	
    	
    	/**
    	 * SISMEMBER key member
    	 *判断 member 元素是否集合 key 的成员。
    	 * */
    	public static void sismember(){
    		redis.flushDB();//清除数据
    		redis.sadd("user", "a","b","c","zzzz");
    		 
    		boolean b=redis.sismember("user", "a");
    		boolean b1=redis.sismember("user", "不存在哦");
    		System.out.println("返回一个 true 跟 false");
    		System.out.println(b);
    		System.out.println(b1);
    	}
    	
    	/**
    	 * 获取集合对象
    	 * */
    	public static void smembers(){
    		redis.flushDB();//清除数据
    		redis.sadd("user", "a","b","c","d","e","f");
    		Set<String> setList=redis.smembers("user");
    		for(String s:setList){
    			System.out.println(s);
    		}
    	}
    	
    	
    	/**
    	 * SMOVE source destination member
    	 * SMOVE 是原子性操作。
    	 * @param srckey 源集合key
    	 * @param dstkey 目标集合key
    	 * @param member 要移动的元素
    	 * 将源集合中的 元素member 移动到目标集合中
    	 * 返回值:
     	 * 如果 member 元素被成功移除,返回 1 。
         * 如果 member 元素不是 source 集合的成员,并且没有任何操作对 destination 集合执行,那么返回 0 。
    	 */
    	public static void smove(){
    		redis.flushDB();//清除数据
    		redis.sadd("user", "a","b","c","zzzz");
    		redis.sadd("user1",  "d","e","f");
    		redis.smove("user", "user1", "zzzz"); 
    		System.out.println("======user剩下的元素应该是 a,b,c======");
    		Set<String> setList=redis.smembers("user");
    		for(String s:setList){
    			System.out.println(s);
    		}
    		
    		System.out.println("======user 1的元素应该是 d,e,f,zzz======");
    		Set<String> setList1=redis.smembers("user1");
    		for(String s:setList1){
    			System.out.println(s);
    		}
    	}
    	
    	/**
    	 * SPOP key
    	 * 移除并返回集合中的一个随机元素。
    	 * 如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用 SRANDMEMBER 命令。
    	 * */
    	public static void spop(){
    		redis.flushDB();//清除数据
    		redis.sadd("user", "1","2","3","4","5","6","7");
    		String s=redis.spop("user");
    		System.out.println("随机弹出并移除的元素:"+s);
    		Set<String> setList=redis.smembers("user");
    		for(String str:setList){
    			System.out.println(str);
    		}
    	}
    	
    	
    	/**
    	 * 如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素。
    	 * */
    	public static void srandmember(){
    		redis.flushDB();//清除数据
    		redis.sadd("user", "1","2","3","4","5","6","7");
    		String s=redis.srandmember("user");
    		System.out.println("随机弹出不删除的元素:"+s);
    		 
    		Set<String> setList=redis.smembers("user");
    		for(String str:setList){
    			System.out.println(str);
    		}
    	}
    	
    	/**
    	 * SREM key member [member ...]
    	 * 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。
    	 * 当 key 不是集合类型,返回一个错误。
    	 * */
    	public static void srem(){
    		redis.flushDB();//清除数据
    		redis.sadd("user", "1","2","3","4","5","6","7");
    		redis.srem("user", "1","3","5");//删除1,3,5
    		Set<String> setList=redis.smembers("user");
    		for(String str:setList){
    			System.out.println(str);
    		}
    	}
    	
    	
    	public static void main(String [] args){
    		sunionstore();
    	}
    }
    

      

  • 相关阅读:
    三连击
    铺地毯
    超级玛丽游戏
    A+B problem
    怎么感觉欠缺点什么、灵光在哪,让我顿悟下
    2016年10月,人生的转折点。
    python第七天
    python第六天
    汉诺塔问题(Hanoi Tower)递归算法解析(Python实现)
    计算多数的乘积(Python实现)
  • 原文地址:https://www.cnblogs.com/zuolun2017/p/5610515.html
Copyright © 2011-2022 走看看