SpringBoot2+Vue2实战(十四)springboot集成redis实现缓存

news/2025/1/16 0:49:29/

一、添加缓存

添加redis缓存之后就不会一直刷新数据库,减少数据库压力

pom.xml依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency>
SpringbootApplication
@EnableCaching
EchartsController
 @AuthAccess@GetMapping("/file/front/all")@Cacheable(value = "files", key = "targetClass + methodName")public Result frontAll() {return Result.success(fileMapper.selectList(null));}

也可以自定义key,要用 ' ' 括起来

@AuthAccess@GetMapping("/file/front/all")@Cacheable(value = "files", key = "'frontAll'")public Result frontAll() {return Result.success(fileMapper.selectList(null));}

二、更新缓存:

fileController

//更新@PostMapping("/update")//更新缓存@CachePut(value = "files",key = "'frontAll'")public Result update(@RequestBody Files files) {//新增或修改fileMapper.updateById(files);return success(fileMapper.selectList(null));}

三、删除缓存

数据库执行删除之后,第一次缓存也删除,后面就不会请求数据库

//删除@DeleteMapping("/{id}")//清除一条缓存,key为要清空的数据@CacheEvict(value = "emp",key = "'frontAll'")public Result delete(@PathVariable("id") Integer id) {Files files = fileMapper.selectById(id);files.setIsDelete(true);fileMapper.updateById(files);return success();}

四、集成redis

pom.xml

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>

application.yml

  redis:port: 6379host: 127.0.0.1

EchartController

@Resourceprivate FileMapper fileMapper;@Autowiredprivate StringRedisTemplate stringRedisTemplate;@AuthAccess@GetMapping("/file/front/all")/*@Cacheable(value = "files", key = "targetClass + methodName")*/public Result frontAll() {//1.从缓存获取数据String jsonStr = stringRedisTemplate.opsForValue().get(FILES_KEY);List<Files> files;//2.取出来的json是空的if (StrUtil.isBlank(jsonStr)) {//3.从数据库取出数据files = fileMapper.selectList(null);//4.再去缓存到redisstringRedisTemplate.opsForValue().set(FILES_KEY,JSONUtil.toJsonStr(files));} else {//减轻数据库的压力//5.如果有,从redis缓存中获取数据files = JSONUtil.toBean(jsonStr, new TypeReference<List<Files>>() {}, true);}return Result.success(files);}

操作完数据库更新缓存操作:(增删改时使用)

第一种方法:最简单的方式

//最简单的方式flushRedis(Constants.FILES_KEY);

删除缓存

FileController

@Autowiredprivate StringRedisTemplate stringRedisTemplate;//删除缓存private void flushRedis(String key){stringRedisTemplate.delete(key);}//更新@PostMapping("/update")//更新缓存/*@CachePut(value = "files",key = "'frontAll'")*/public Result update(@RequestBody Files files) {//新增或修改fileMapper.updateById(files);flushRedis(Constants.FILES_KEY);return success();}//删除@DeleteMapping("/{id}")//清除一条缓存,key为要清空的数据/* @CacheEvict(value = "emp",key = "'frontAll'")*/public Result delete(@PathVariable("id") Integer id) {Files files = fileMapper.selectById(id);files.setIsDelete(true);fileMapper.updateById(files);flushRedis(Constants.FILES_KEY);return success();}

第二种方法:

设置缓存

FileController

//设置缓存private void setCache(String key,String value){stringRedisTemplate.opsForValue().set(key,value);}

 ①从redis取出数据,操作完,再设置,不用查询数据库,性能比较高

//从redis取出数据,操作完,再设置,不用查询数据库String json = stringRedisTemplate.opsForValue().get(Constants.FILES_KEY);List<Files> files1 = JSONUtil.toBean(json, new TypeReference<List<Files>>() {},true);files1.add(saveFile);setCache(Constants.FILES_KEY,JSONUtil.toJsonStr(files1));

②从数据库查出数据,再设置最新缓存

 //从数据库查出数据List<Files> files = fileMapper.selectList(null);//设置最新的缓存setCache(Constants.FILES_KEY, JSONUtil.toJsonStr(files));


http://www.ppmy.cn/news/841191.html

相关文章

Android 报错,闪退(错误)日志保存到手机内存中,以文本文件的形式保存

1.直接贴代码 import android.app.AlarmManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Environment; import android.util.Log;import com.nuotu.atmBookClient.App;import java.io.File; i…

台灯c语言,基于msp单片机的智能台灯设计(C语言).doc

基于msp单片机的智能台灯设计(C语言).doc 基于msp430单片机的智能台灯设计(C语言) 桂林理工大学信息学院 实 习 报 告 实习名称&#xff1a; 电子系统设计创新与实践 设计题目&#xff1a; 基于单片机的智能台灯设计 专业班级&#xff1a; 姓 名&#xff1a; 学 号&#xff1a;…

计算机图形学台灯光照代码,光照控制自动调光台灯工作原理及设计

《光照控制自动调光台灯工作原理及设计》由会员分享&#xff0c;可在线阅读&#xff0c;更多相关《光照控制自动调光台灯工作原理及设计(2页珍藏版)》请在人人文库网上搜索。 1、光照控制自动调光台灯工作原理及设计时间&#xff1a;2011-01-02 20:01:09 来源&#xff1a; 作者…

关于电源线 USB台灯3C认证相关介绍

电源线台灯等属于电源相关产品&#xff0c;正好处于3c强制认证行列&#xff1b;并且&#xff0c;台灯的电压普遍在36V以上所以是在3c认证行列。 台灯申请3C认证的检测标准&#xff1a; GB7000.1-2015; GB7000.204-2008 1、3C认证是强制性认证&#xff0c;是进入国内市场的通行…

学生护眼台灯怎么选?性价比高的学生护眼台灯

随着经济的快速发展&#xff0c;从小孩子都开始用起电子产品&#xff0c;不管是电视机、手机等&#xff0c;都是非常普遍的&#xff0c;这就可能导致孩子进入学生时期时就开始近视了&#xff0c;不仅要在学校学习知识&#xff0c;回家也要对着电视机&#xff0c;不知道怎么适当…

计算机和书桌还有台灯英语,台灯的英语单词是什么

一、英语单词&#xff1a;desk lamp; table lamp; reading lamp 二、双语例句&#xff1a; 1 嘟嘟会将床头的台灯关掉&#xff0c;房间里一片漆黑。 Doodle will turn my desk lamp, dark room. 2 从亚洲到美洲&#xff0c;从新德里到丹佛&#xff0c;全世界每年所有电器的用电…

如何选择一款优秀的儿童读写台灯?

如何选择一款优秀的儿童阅读台灯&#xff1f;除了品牌、外观、材质、价格等因素外&#xff0c;最关键的是技术参数。 先说结论&#xff0c;满足如下几点参数&#xff0c;当数优选&#xff1a; 1-光通量&#xff1a;500lm以上 2-显色指数&#xff1a;≥95 3-色温&#xff1a…

台灯c语言,Jya无线台灯C 告诉你如何重新定义光的含义

原标题&#xff1a;Jya无线台灯C 告诉你如何重新定义光的含义 凡是要去撼动非常传统的行业或者产品的时候&#xff0c;肯定会遭到大多数人的质疑&#xff0c;都会说怎么可能&#xff1f;怎么会&#xff1f;拿现在的台灯举例&#xff0c;造型永远都是单一的弯曲状&#xff0c;目…