美文网首页
RedisTemplate中set类型的使用

RedisTemplate中set类型的使用

作者: BestbpF | 来源:发表于2019-02-12 10:03 被阅读5次

    简述

    • 上一文中简述了使用StringRedisTemplate操作redis中的hash类型,今天来记录一下操作set类型的主要方法

    代码

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class SetDemo {
    
        @Autowired
        private StringRedisTemplate redisTemplate;
        
        @Test
        public void demo1() {
            //集合中添加元素,返回添加个数
            redisTemplate.opsForSet().add("games", "鬼泣", "古墓丽影", "仙剑奇侠传", "LOL", "DOTA自走棋");
            printSet("games");
        }
        
        @Test
        public void demo2() {
            //从集合中删除指定元素
            redisTemplate.opsForSet().remove("games", "鬼泣");
            printSet("games");
        }
        
        @Test
        public void demo3() {
            //从集合中随机删除一个元素,并返回该元素
            String item = redisTemplate.opsForSet().pop("games");
            System.out.println(item);
            printSet("games");
        }
        
        @Test
        public void demo4() {
            //将集合1中的指定元素移到集合2
            redisTemplate.opsForSet().move("games", "仙剑奇侠传", "chinese-games");
            //打印集合1
            printSet("games");
            //打印集合2
            printSet("chinese-games");
        }
        
        
        
        @Test
        public void demo5() {
            //获得集合大小
            Long size = redisTemplate.opsForSet().size("games");
            printSet("games");
            System.out.println(size);
        }
        
        @Test
        public void demo6() {
            //判断集合中是否存在某元素
            Boolean ifExist = redisTemplate.opsForSet().isMember("games", "LOL");
            System.out.println(ifExist);
        }
        
        @Test
        public void demo7() {
            //添加集合a
            redisTemplate.opsForSet().add("set-a", "a", "b", "c", "d");
            //添加集合b
            redisTemplate.opsForSet().add("set-b", "a", "b");
            //求交集
            Set<String> intersection = redisTemplate.opsForSet().intersect("set-a", "set-b");
            //也可以和多个key对应的集合求交集                  Set<V> intersect(K key, K otherKey);
            System.out.println(intersection);
        }
        
        @Test
        public void demo8() {
            //添加集合a
            redisTemplate.opsForSet().add("set-a", "a", "b", "c", "d");
            //添加集合b
            redisTemplate.opsForSet().add("set-b", "a", "b");
            //求交集并放入集合c
            redisTemplate.opsForSet().intersectAndStore("set-a", "set-b", "set-c");
            //也可以和多个key对应的集合求交集                 Long intersectAndStore(K key, Collection<K> otherKeys, K destKey);
            //打印集合c
            printSet("set-c");
        }
        
        @Test
        public void demo9() {
            //添加集合m
            redisTemplate.opsForSet().add("set-m", "a", "b", "c", "d");
            //添加集合n
            redisTemplate.opsForSet().add("set-n", "c", "d", "e", "f");
            //求并集
            Set<String> union = redisTemplate.opsForSet().union("set-m", "set-n");
            System.out.println(union);
            
            //其他操作与intersect类似 如和多个key求并集,求并集并放入集合等
        }
        
        @Test
        public void demo10() {
            //添加集合d
            redisTemplate.opsForSet().add("set-d", "a", "b", "c", "d");
            //添加集合e
            redisTemplate.opsForSet().add("set-e", "c", "d", "e", "f");
            //添加集合f
            redisTemplate.opsForSet().add("set-f", "e", "f", "g", "h");
            
            //求差集(属于d不属于e和f)
            Set<String> difference = redisTemplate.opsForSet().difference("set-d", Arrays.asList("set-e", "set-f"));
            System.out.println(difference);
            //其他操作与交集并集类似
        }
        
        @Test
        public void demo11() {
            //随机获取集合中的一个元素
            System.out.println(redisTemplate.opsForSet().randomMember("games"));
            
            //随机获取集合中指定个数的元素(有可能重复)
            System.out.println(redisTemplate.opsForSet().randomMembers("games", 10));
            
            //随机获取集合中指定个数的元素(不重复)
            System.out.println(redisTemplate.opsForSet().distinctRandomMembers("games", 10));
    
        
        }
        
        /**
         *  打印集合
         * @date 2019年2月12日
         * @author baipengfei
         * @param key
         */
        private void printSet(String key) {
            //获取所有成员
            Set<String> members = redisTemplate.opsForSet().members(key);
            System.out.println(members);
        }
    }
    

    相关文章

      网友评论

          本文标题:RedisTemplate中set类型的使用

          本文链接:https://www.haomeiwen.com/subject/wkeheqtx.html