首页>>后端>>SpringBoot->SpringBoot基础之花式使用Redis

SpringBoot基础之花式使用Redis

时间:2023-11-30 本站 点击:0

前言

Redis是比较著名的NoSql数据库,主要用于存放KV型数据等非关系行数据,但随着Redis的发展,它所能做的功能越来越多,能够实现的场景包括但不限于:缓存,配置,排行榜,计数,分布式锁,限流,消息队列等等,当然我们提到他最多的时候是应用在缓存场景,因为Redis是为缓存而生.

Redis集成请看前置文章SpringBoot基础之集成使用Redis

如果当前小节没有定义对象,默认的注入对象为

@AutowiredprivateRedisTemplate<String,String>template;@AutowiredprivateRedisTemplate<String,Integer>intTemplate;

基本增删改查,以String举例

单增

template.opsForValue().set("zdc","zdc");

批量增

HashMap<String,String>map=newHashMap<>();template.opsForValue().multiSet(map);

批量插入不要一直用set

管道方式批量增

HashMap<String,String>map=newHashMap<>();template.executePipelined((RedisCallback)redisConnection->{for(Map.Entry<String,String>entry:map.entrySet()){byte[]bytes=entry.getKey().getBytes();redisConnection.set(bytes,bytes);}returnnull;});

管道的方式能操作多种类型,具体操作可以自测一下. 另一种写法如下

HashMap<String,String>map=newHashMap<>();template.executePipelined(newRedisCallback(){@OverridepublicObjectdoInRedis(RedisConnectionconnection)throwsDataAccessException{for(Map.Entry<String,String>entry:map.entrySet()){byte[]bytes=entry.getKey().getBytes();connection.set(bytes,bytes);}returnnull;}});

不存在则增加,存在不修改

template.opsForValue().setIfAbsent("zdc","zdc");

key不存在则设置值,存在则不变

存在则修改,不存在不增加

template.opsForValue().setIfPresent("zdc","cdz");

自增自减

自增步幅为2,执行一次加2

intTemplate.opsForValue().increment("zzz",2);

自减步幅为3,执行一次减少3

intTemplate.opsForValue().decrement("zzz",3);

单查

template.opsForValue().get("zdc");

批量查

template.opsForValue().set("zdc","zdc");0

删除

template.opsForValue().set("zdc","zdc");1

事务

开启事务并提交

template.opsForValue().set("zdc","zdc");2

开启事务multi() 提交事务exec() 回滚事务discard()

简单计数

template.opsForValue().set("zdc","zdc");3

并发限流

根据KEY限制2最少两秒请求一次,KEY可以使用户id,也可以使请求参数的HASH

template.opsForValue().set("zdc","zdc");4

实现栈功能 List

从左侧添加一个元素

template.opsForValue().set("zdc","zdc");5

从左侧获取一个元素

template.opsForValue().set("zdc","zdc");6

实现队列功能 List

从左侧添加一个元素

template.opsForValue().set("zdc","zdc");5

从右侧获取一个元素

template.opsForValue().set("zdc","zdc");8

交集,并集,差集 Set

template.opsForValue().set("zdc","zdc");9

交集

HashMap<String,String>map=newHashMap<>();template.opsForValue().multiSet(map);0

并集

HashMap<String,String>map=newHashMap<>();template.opsForValue().multiSet(map);1

差集

HashMap<String,String>map=newHashMap<>();template.opsForValue().multiSet(map);2

排行 ZSET

HashMap<String,String>map=newHashMap<>();template.opsForValue().multiSet(map);3

获取前十名

HashMap<String,String>map=newHashMap<>();template.opsForValue().multiSet(map);4

结束语

尽信书则不如,以上内容,纯属一家之言,因个人能力有限,难免有疏漏和错误之处,如发现bug或者有更好的建议,欢迎批评指正,不吝感激

如果您喜欢我的文章,可以[关注]+[点赞]+[评论],您的三连是我前进的动力,期待与您共同成长~

作者:ZOUZDC

链接:https://juejin.cn/post/7028963866063306760


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/SpringBoot/4384.html