• Jedis操作Redis--Set类型


    /**
     * Set(集合)
     * SADD,SCARD,SDIFF,SDIFFSTORE,SINTER,SINTERSTORE,SISMEMBER,SMEMBERS,SMOVE,SPOP,SRANDMEMBER,SREM,SUNION,SUNIONSTORE,SSCAN
     */
    public class SetTypeTest {
        private Jedis jedis;
    
        private static final String KEY = "set";
    
        private static final String VALUE = "layman";
    
        @Before
        public void setUp() {
            this.jedis = new Jedis(new JedisShardInfo("192.168.133.188", 6379));
        }
    
        /**
         * SADD key member [member ...]
         * 将一个或多个 member 元素加入到集合 key 当中,已经存在于集合的 member 元素将被忽略。
         * 假如 key 不存在,则创建一个只包含 member 元素作成员的集合。
         * 当 key 不是集合类型时,返回一个错误。
         */
        @Test
        public void SADD() {
            jedis.sadd(KEY, VALUE + 2, VALUE + 0, VALUE + 1);
            SMEMBERS();
        }
    
        /**
         * SCARD key
         * 返回集合 key 的基数(集合中元素的数量)。
         */
        @Test
        public void SCARD() {
            System.out.println(jedis.scard(KEY));
        }
    
        /**
         * SDIFF key [key ...]
         * 返回一个集合的全部成员,该集合是所有给定集合之间的差集。
         * 不存在的 key 被视为空集。
         * <p/>
         * SDIFFSTORE destination key [key ...]
         * 这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集。
         * 如果 destination 集合已经存在,则将其覆盖。
         * destination 可以是 key 本身。
         */
        @Test
        public void SDIFF() {
            SMEMBERS();
            jedis.sadd(KEY + 0, VALUE + 1, VALUE + 3);
            System.out.println(jedis.smembers(KEY + 0));
            System.out.println(jedis.sdiff(KEY, KEY + 0));//返回值为KEY-KEY0的值
        }
    
        /**
         * SINTER key [key ...]
         * 返回一个集合的全部成员,该集合是所有给定集合的交集。
         * 不存在的 key 被视为空集。
         * 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。
         * <p/>
         * SINTERSTORE destination key [key ...]
         * 这个命令类似于 SINTER 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
         * 如果 destination 集合已经存在,则将其覆盖。
         * destination 可以是 key 本身。
         */
        @Test
        public void SINTER() {
            System.out.println(jedis.sinter(KEY, KEY + 0));
        }
    
        /**
         * SISMEMBER key member
         * 判断 member 元素是否集合 key 的成员。
         */
        @Test
        public void SISMEMBER() {
            System.out.println(jedis.sismember(KEY, VALUE + 0));
            System.out.println(jedis.sismember(KEY, VALUE + 5));
        }
    
        /**
         * SMEMBERS key
         * 返回集合 key 中的所有成员。
         * 不存在的 key 被视为空集合。
         */
        @Test
        public void SMEMBERS() {
            Set<String> smembers = jedis.smembers(KEY);
            System.out.println(smembers);
        }
    
        /**
         * SMOVE source destination member
         * 将 member 元素从 source 集合移动到 destination 集合。
         * SMOVE 是原子性操作。
         * 如果source集合不存在或不包含指定的member元素,则SMOVE命令不执行任何操作,仅返回0。否则,member元素从source集合中被移除,并添加到destination 集合中去。
         * 当 destination 集合已经包含 member 元素时, SMOVE 命令只是简单地将 source 集合中的 member 元素删除。
         * 当 source 或 destination 不是集合类型时,返回一个错误。
         */
        @Test
        public void SMOVE() {
            System.out.println(jedis.smembers(KEY));
            System.out.println(jedis.smembers(KEY + 0));
            jedis.smove(KEY, KEY + 0, "layman0");
            System.out.println(jedis.smembers(KEY));
            System.out.println(jedis.smembers(KEY + 0));
        }
    
        /**
         * SPOP key
         * 移除并返回集合中的一个随机元素。
         * 如果只想获取一个随机元素,但不想该元素从集合中被移除的话,可以使用 SRANDMEMBER 命令。
         */
        @Test
        public void SPOP() {
            SMEMBERS();
            System.out.println(jedis.spop(KEY));
            SMEMBERS();
        }
    
        /**
         * SRANDMEMBER key [count]
         * 如果命令执行时,只提供了 key 参数,那么返回集合中的一个随机元素。
         * 从 Redis 2.6 版本开始, SRANDMEMBER 命令接受可选的 count 参数:
         * 如果 count 为正数,且小于集合基数,那么命令返回一个包含 count 个元素的数组,数组中的元素各不相同。如果 count 大于等于集合基数,那么返回整个集合。
         * 如果 count 为负数,那么命令返回一个数组,数组中的元素可能会重复出现多次,而数组的长度为 count 的绝对值。
         * 该操作和 SPOP 相似,但 SPOP 将随机元素从集合中移除并返回,而 SRANDMEMBER 则仅仅返回随机元素,而不对集合进行任何改动。
         */
        @Test
        public void SRANDMEMBER() {
            System.out.println(jedis.smembers(KEY + 0));
            System.out.println(jedis.srandmember(KEY + 0, 2));
            System.out.println(jedis.srandmember(KEY + 0, -2));
        }
    
        /**
         * SREM key member [member ...]
         * 移除集合 key 中的一个或多个 member 元素,不存在的 member 元素会被忽略。
         * 当 key 不是集合类型,返回一个错误。
         */
        @Test
        public void SREM() {
            SMEMBERS();
            jedis.srem(KEY, "layman1");
            SMEMBERS();
        }
    
        /**
         * SUNION key [key ...]
         * 返回一个集合的全部成员,该集合是所有给定集合的并集。
         * 不存在的 key 被视为空集。
         * <p/>
         * SUNIONSTORE destination key [key ...]
         * 这个命令类似于 SUNION 命令,但它将结果保存到 destination 集合,而不是简单地返回结果集。
         * 如果 destination 已经存在,则将其覆盖。
         * destination 可以是 key 本身。
         */
        @Test
        public void SUNION() {
            SMEMBERS();
            jedis.sadd(KEY + 0, "layman" + new Random().nextInt(50));
            System.out.println(jedis.sunion(KEY, KEY + 0));
        }
    }
  • 相关阅读:
    Google开源单元測试框架Google Test:VS2012 配置
    ubuntu16.04 uninstall cuda 9.0 completely and install 8.0 instead
    ubuntu 16.04 安装cuda的方法
    ubuntu垃圾文件清理方法
    行人检测资源(下)代码数据
    行人检测资源(上)综述文献
    开源深度学习架构Caffe
    python pip 安装库文件报错:pip install ImportError: No module named _internal
    Canny算子
    vmware中nat模式中使用静态ip后无法上网的问题
  • 原文地址:https://www.cnblogs.com/Laymen/p/6122935.html
Copyright © 2020-2023  润新知