SpringBoot系列教程之RedisTemplate Set数据结构使用教程
更多Spring文章,欢迎点击 一灰灰Blog-Spring专题
Redis的五大数据结构,前面讲述了String和List,Hash的使用姿势,接下来就是Set集合,与list最大的区别就是里面不允许存在重复的数据
<!-- more -->
I. 基本使用
在开始之前,序列化的指定需要额外处理,上一篇已经提及,相关内容可以参考:
1. 新增元素
新增元素时,可以根据返回值来判断是否添加成功, 如下面的单个插入时,如果集合中之前就已经有数据了,那么返回0,否则返回1
/** * 新增一个 sadd * * @param key * @param value */ public void add(String key, String value) { redisTemplate.opsForSet().add(key, value); }
2. 删除元素
因为list是有序的,所以在list的删除需要指定位置;而set则不需要
/** * 删除集合中的值 srem * * @param key * @param value */ public void remove(String key, String value) { redisTemplate.opsForSet().remove(key, value); }
3. 判断是否存在
set一个最大的应用场景就是判断某个元素是否有了,从而决定怎么执行后续的操作, 用的是 isMember
方法,来判断集合中是否存在某个value
/** * 判断是否包含 sismember * * @param key * @param value */ public void contains(String key, String value) { redisTemplate.opsForSet().isMember(key, value); }
4. 获取所有的value
set无序,因此像list一样获取某个范围的数据,不太容易,更常见的方式就是全部获取出来
/** * 获取集合中所有的值 smembers * * @param key * @return */ public Set<String> values(String key) { return redisTemplate.opsForSet().members(key); }
5. 集合运算
set还提供了另外几个高级一点的功能,就是集合的运算,如求并集,交集等操作,虽然在我有限的业务应用中,并没有使用到这些高级功能,下面依然个给出使用的姿势
/** * 返回多个集合的并集 sunion * * @param key1 * @param key2 * @return */ public Set<String> union(String key1, String key2) { return redisTemplate.opsForSet().union(key1, key2); } /** * 返回多个集合的交集 sinter * * @param key1 * @param key2 * @return */ public Set<String> intersect(String key1, String key2) { return redisTemplate.opsForSet().intersect(key1, key2); } /** * 返回集合key1中存在,但是key2中不存在的数据集合 sdiff * * @param key1 * @param key2 * @return */ public Set<String> diff(String key1, String key2) { return redisTemplate.opsForSet().difference(key1, key2); }
II. 其他
0. 项目
1. 一灰灰Blog
- 一灰灰Blog个人博客 https://blog.hhui.top
- 一灰灰Blog-Spring专题博客 http://spring.hhui.top
一灰灰的个人博客,记录所有学习和工作中的博文,欢迎大家前去逛逛
2. 声明
尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激
- 微博地址: 小灰灰Blog
- QQ: 一灰灰/3302797840
3. 扫描关注
一灰灰blog
知识星球
相关推荐
范范 2020-06-28
YClimb 2020-09-15
Lzs 2020-10-23
聚合室 2020-11-16
零 2020-09-18
Justhavefun 2020-10-22
jacktangj 2020-10-14
ChaITSimpleLove 2020-10-06
Andrea0 2020-09-18
周游列国之仕子 2020-09-15
afanti 2020-09-16
88234852 2020-09-15
风雨断肠人 2020-09-04
卖口粥湛蓝的天空 2020-09-15
stulen 2020-09-15
pythonxuexi 2020-09-06
abfdada 2020-08-26