前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis Set

Redis Set

作者头像
摸鱼的G
发布2023-02-22 11:48:52
4380
发布2023-02-22 11:48:52
举报
文章被收录于专栏:火属性小虫

Redis Set

Set是Redis中的数据类型,与Redis的Zset有所区分:

Set中文描述为“无序集合” 特点是:

  1. 集合中的元素是无序的
  2. 集合中的元素不能重复,是唯一的

与ZSet相比缺少了分数(point),所以无法排序。

新增数据

使用add() 方法批量增加数据。

代码语言:javascript
复制
redisTemplate.opsForSet().add("ranks", personalRecord1, personalRecord2);

既然是操作 Set,那么方法自然是 opsForSet() ,每种数据类型都有自己的操作方法。

add() 方法第一个参数是 Key;后面就是 Java 实例对象。

删除数据操作

使用 remove() 方法删除一个数据元素:

代码语言:javascript
复制
redisTemplate.opsForSet().remove("ranks", personalRecord);

remove() 方法第一个参数是 Key;第二个参数是待删除的数据对象。删除与添加是对应的,添加的是自定义对象,删除的时候也要传入相同的自定义对象。(先查询再删除)

千万不要理解为,添加的是 personalRecord 实例对象,然后用 personalRecordId 删除。不能跟 MySQL 混淆了。

修改数据操作

不存在修改这个说法。或者说,修改等同于:先删除旧数据,再加入新数据

基本查询

查询方法不是常见的 getXX 而是 members() :

代码语言:javascript
复制
Set<PersonalRecord> datas = redisTemplate.opsForSet().members("ranks");

通过 Key 查询集合中的所有数据元素。返回值的泛型,就是新增数据的类型,往 Set 缓存里放了什么数据,拿出来就是什么数据。

多集合操作

使用 Set 一般来说并不是用于数据对象的缓存,因为无序,实际上操作很不方便,不能像列表一样精确查询。

使用 Set 多用于集合间的操作。所以,推荐 Set 存储简单的数据,比如 Java 的字符串或数字,而不要在 Set 中存入复杂的 Java 自定义对象。

比如只存入个人战绩的 id 值而不是整个对象。

多集合的操作主要有:

求并集

给定两个集合A,B,把他们所有的元素合并在一起组成的集合,叫做集合A与集合B的并集。大家应该学习过并集的概念。

union() 方法用于求多个集合的并集:

代码语言:javascript
复制
List<String> keys = new ArrayList<>();
keys.add("ranks1");
keys.add("ranks2");
keys.add("ranks3");
Set<Long> unionDatas = redisTemplate.opsForSet().union(keys);

求交集

集合论中,设A,B是两个集合,由所有属于集合A且属于集合B的元素所组成的集合,叫做集合A与集合B的交集

intersect() 方法用于求多个集合的交集:

代码语言:javascript
复制
List<String> keys = new ArrayList<>();
keys.add("ranks1");
keys.add("ranks2");
keys.add("ranks3");
Set<Long> interDatas = redisTemplate.opsForSet().intersect(keys);

intersect() 方法返回给定所有给定集合的交集。

不存在的集合 key 被视为空集。当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。

求差集

设A,B是两个集合,以属于A而不属于B的元素为元素的集合成为A与B的差集

difference() 方法用于求一个集合与其它集合的差集:

代码语言:javascript
复制
List<String> otherkeys = new ArrayList<>();
otherkeys.add("ranks2");
otherkeys.add("ranks3");
Set<Long> diffDatas = redisTemplate.opsForSet().difference("ranks1", otherkeys);

difference() 方法返回第一个集合与其他集合之间的差异,也可以认为说第一个集合中独有的元素。不存在的集合 key 将视为空集。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Redis Set
  • 删除数据操作
  • 修改数据操作
  • 基本查询
  • 多集合操作
    • 求并集
      • 求交集
        • 求差集
        相关产品与服务
        云数据库 Redis
        腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档