程序员子龙(Java面试 + Java学习) 程序员子龙(Java面试 + Java学习)
首页
学习指南
工具
开源项目
技术书籍

程序员子龙

Java 开发从业者
首页
学习指南
工具
开源项目
技术书籍
  • 基础

  • JVM

  • Spring

  • 并发编程

  • Mybatis

  • 网络编程

  • 数据库

  • 缓存

    • Redis

      • Redis基础知识
      • redis底层数据结构
      • 发布和订阅
      • 分分钟搞懂布隆过滤器,亿级数据过滤算法你值得拥有!
      • 缓存和数据库一致性解决方案
      • 详解redis的bitmap
      • 面试常问使用缓存出现的问题
      • Redis hot key 发现以及解决办法
      • Redis实现排行榜功能实战
      • Redis 管道技术——Pipeline
      • 11、RedisTemplate使用最详解(一)--- opsForValue()
      • RedisTemplate使用最详解(二)--- opsForList()
      • RedisTemplate使用最详解(三)--- opsForHash()
      • RedisTemplate使用最详解(四)--- opsForSet()
        • RedisTemplate使用最详解(五)--- opsForZSet()
        • Redis分布式锁-这一篇全了解(Redission实现分布式锁完美方案)
        • 建议收藏!看完全面掌握,最详细的Redis总结
        • Redis分布式锁-这一篇就够了
        • 《进大厂系列》系列-Redis常见面试题
      • 本地缓存

    • 设计模式

    • 分布式

    • 高并发

    • SpringBoot

    • SpringCloudAlibaba

    • Nginx

    • 面试

    • 生产问题

    • 系统设计

    • 消息中间件

    • Java
    • 缓存
    • Redis
    程序员子龙
    2024-05-17
    目录

    RedisTemplate使用最详解(四)--- opsForSet()

    # 1、add(K key, V… var2)

    向key中批量添加值

    redisTemplate.opsForSet().add("set", "aa", "bb", "cc");
    redisTemplate.opsForSet().add("set", "ee");
    
    1
    2

    # 2、members(K key)

    获取key中的值

    Set set = redisTemplate.opsForSet().members("set");
    System.out.println("set = " + set);
    
    
    1
    2
    3

    3、size(K key)

    获取key对应集合的长度

    Long set = redisTemplate.opsForSet().size("set");
    System.out.println("set = " + set);
    
    
    1
    2
    3

    # 4、randomMember(K key)

    随机获取key对应的集合中的元素

    Object set = redisTemplate.opsForSet().randomMember("set");
    System.out.println("set = " + set);
    
    
    1
    2
    3

    # 5、randomMembers(K key, long long1)

    随机获取key对应集合中指定个数的元素

    • set本身是不会有重复的值
    • 随机获取可能获取到一样的,所以返回的list集合中可能会有重复的值
    List set = redisTemplate.opsForSet().randomMembers("set", 2);
    System.out.println("set = " + set);
    
    
    1
    2
    3

    # 6、isMember(K key, Object o1)

    判断key对应的集合中是否包含元素o1

    Boolean member = redisTemplate.opsForSet().isMember("set", "aa");
    System.out.println("member = " + member);
    
    1
    2

    # 7、distinctRandomMembers(K key, long long1)

    随机获取key对应集合中指定个数的元素,并且去重

    Set set = redisTemplate.opsForSet().distinctRandomMembers("set", 3);
    System.out.println("set = " + set);
    
    
    1
    2
    3

    # 8、move(K key1, V v1, K key2)

    将key1对应集合中的值v1,转移到key2集合中

    • key2不存在直接新增
    • v1不存在,转移失败返回false
    Boolean move = redisTemplate.opsForSet().move("set", "aa", "set2");
    System.out.println("move = " + move);
    
    
    1
    2
    3

    # 9、pop(K key)

    随机弹出key对应集合中的一个元素

    Object set = redisTemplate.opsForSet().pop("set");
    System.out.println("set = " + set);
    
    
    1
    2
    3

    # 10、pop(K key, long count)

    随机移除key对应集合中的count个元素

    List set = redisTemplate.opsForSet().pop("set", 2);
    System.out.println("set = " + set);
    
    
    1
    2
    3

    # 11、remove(K key, Object… values)

    批量移除key对应集合中指定的元素

    redisTemplate.opsForSet().remove("set", "cc","aa");
    
    1

    # 12、scan(K key, ScanOptions options)

    匹配获取键值对

    • ScanOptions.NONE为获取全部键值对
    • ScanOptions.scanOptions().match(“C”).build()匹配获取键位map1的键值对,不能模糊匹配。
    Cursor<Object> cursor = redisTemplate.opsForSet().scan("set", ScanOptions.scanOptions().match("ee").build());
    while (cursor.hasNext()){
        Object object = cursor.next();
        System.out.println("object = " + object);
    }
    
    
    1
    2
    3
    4
    5
    6

    # 13、difference(K key, Collection otherKeys)

    获取key与其他集合之间的差值

    • key中有,otherKeys中没有的
    List list = new ArrayList();
    list.add("set2");
    Set set = redisTemplate.opsForSet().difference("set", list);
    System.out.println("set = " + set);
    
    
    1
    2
    3
    4
    5

    # 14、difference(K key, K otherKey)

    获取key与另一个otherKey集合之间的差值

    • key中有,otherKeys中没有的
    Set difference = redisTemplate.opsForSet().difference("set", "set2");
    System.out.println("difference = " + difference);
    
    
    1
    2
    3

    15、differenceAndStore(K key, K otherKey, K destKey) 获取key与另一个otherKey所对应的集合之间的差值,并将结果存入指定的destKey中

    destKey存在,它原本集合中的所有值会被清空并且替换为获取的差值 destKey不存在,直接新增 key与otherKey没有获取到差值,destKey如果存在,会被删除

    Long aLong = redisTemplate.opsForSet().differenceAndStore("set", "set2", "set3");
    System.out.println("aLong = " + aLong);
    
    
    1
    2
    3

    # 16、differenceAndStore(K key, Collection otherKeys, K destKey)

    获取key与另外一些otherKeys集合之间的差值,并将结果存入指定的destKey中

    • destKey存在,它原本集合中的所有值会被清空并且替换为获取的差值
    • destKey不存在,直接新增
    • key与otherKeys没有获取到差值,destKey如果存在,会被删除
    List list = new ArrayList();
    list.add("set2");
    Long aLong = redisTemplate.opsForSet().differenceAndStore("set", list, "set3");
    System.out.println("aLong = " + aLong);
    
    
    1
    2
    3
    4
    5

    # 17、intersect(K key, K otherKey)

    获取两个集合中的交集元素

    Set intersect = redisTemplate.opsForSet().intersect("set", "set2");
    System.out.println("intersect = " + intersect);
    
    
    1
    2
    3

    # 18、intersect(K key, Collection otherKeys)

    获取多个key对应集合之间的交集

    List list = new ArrayList();
    list.add("set2");
    list.add("set3");
    Set set = redisTemplate.opsForSet().intersect("set", list);
    System.out.println("set = " + set);
    
    
    1
    2
    3
    4
    5
    6

    # 19、intersectAndStore(K key, K otherKey, K destKey)

    获取key集合与另一个otherKey集合之间的交集元素,并将其放入指定的destKey集合中

    • 没有获取到交集元素时,注意:若指定集合destKey存在,它将会被删除
    Long aLong = redisTemplate.opsForSet().intersectAndStore("set", "set2", "set4");
    System.out.println("aLong = " + aLong);
    
    
    1
    2
    3

    20、intersectAndStore(K key, Collection otherKeys, K destKey)

    获取key集合与其他otherKeys集合之间的交集元素,并将其放入指定的destKey集合中

    没有获取到交集元素时,注意:若指定集合destKey存在,它将会被删除

    List list = new ArrayList();
    list.add("set2");
    Long aLong = redisTemplate.opsForSet().intersectAndStore("set", list, "set5");
    System.out.println("aLong = " + aLong);
    
    
    1
    2
    3
    4
    5

    # 21、union(K key, K otherKey)

    获取两个集合的合集,并且去重

    Set union = redisTemplate.opsForSet().union("set", "set2");
    System.out.println("union = " + union);
    
    1
    2

    # 22、union(K key, Collection otherKeys)

    获取多个集合的合集,去重

    List list = new ArrayList();
    list.add("set2");
    Set union = redisTemplate.opsForSet().union("set", list);
    System.out.println("union = " + union);
    
    
    1
    2
    3
    4
    5

    # 23、unionAndStore(K key, K otherKey, K destKey)

    获取两个集合之间的合集,并放入指定key对应的新集合中

    • 若指定key对应的集合存在,会被覆盖掉
    Long aLong = redisTemplate.opsForSet().unionAndStore("se3", "set2", "set4");
    System.out.println("aLong = " + aLong);
    
    
    1
    2
    3

    # 24、unionAndStore(K key, Collection otherKeys, K destKey)

    获取多个集合之间的合集,并放入指定key对应的新集合中

    • 若指定key对应的集合存在,会被覆盖掉
    List list = new ArrayList();
    list.add("set2");
    list.add("set3");
    redisTemplate.opsForSet().unionAndStore("set", list, "set4");
    
    
    1
    2
    3
    4
    5

    领取免费学习资源 (opens new window)

    上次更新: 2024/06/14, 13:58:29
    RedisTemplate使用最详解(三)--- opsForHash()
    RedisTemplate使用最详解(五)--- opsForZSet()

    ← RedisTemplate使用最详解(三)--- opsForHash() RedisTemplate使用最详解(五)--- opsForZSet()→

    最近更新
    01
    一个注解,优雅的实现接口幂等性
    11-17
    02
    MySQL事务(超详细!!!)
    10-14
    03
    阿里二面:Kafka中如何保证消息的顺序性?这周被问到两次了
    10-09
    更多文章>
    Theme by Vdoing | Copyright © 2024-2024

        辽ICP备2023001503号-2

    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式