当前位置: 首页 > news >正文

湖南城乡建设网站开展网络营销的企业

湖南城乡建设网站,开展网络营销的企业,进贤城乡规划建设局网站,淘宝客网站主题模板系列文章目录 分页查询–Java项目实战篇 全局异常处理–Java实战项目篇 完善登录功能–过滤器的使用 更多该系列文章请查看我的主页哦 文章目录系列文章目录前言一、Spring Cache介绍二、Spring Cache的使用1. 导入依赖2. 配置信息3. 在启动类上添加注解4. 添加注解4.1 CacheP…

系列文章目录

分页查询–Java项目实战篇
全局异常处理–Java实战项目篇
完善登录功能–过滤器的使用
更多该系列文章请查看我的主页哦


文章目录

  • 系列文章目录
  • 前言
  • 一、Spring Cache介绍
  • 二、Spring Cache的使用
    • 1. 导入依赖
    • 2. 配置信息
    • 3. 在启动类上添加注解
    • 4. 添加注解
      • 4.1 @CachePut注解
      • 4.2 @CacheEvict注解
      • 4.3 @Cacheable注解
  • 查看Redis存入的数据
  • 总结


前言

在我们学习完Redis缓存之后,明白了为什么要使用Redis。也通过学习写代码练习时需要使用Redis进行大量的设置值、删除值、还有大量的逻辑判断将数据加入或删除Redis缓存。虽说逻辑方面也比较简单,但太过于繁琐。每个方法都得注入RedisTemplate,使用redisTemplate.opsForValue().set(phone,code,60L, TimeUnit.SECONDS)这样的代码。才能使得数据库中的数据与Redis缓存中的数据保持一致从而避免用户读到的数据是脏数据(修改前的数据,与数据库的数据不一致现象)。

然而Spring就给我们提供了Spring Cache框架,来减少这部分的麻烦。使我们的开发可以更多的关注于业务逻辑。下面这篇文章我们就来讲述这个框架的使用。


一、Spring Cache介绍

Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
Spring Cache提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。
CacheManager是Spring提供的各种缓存技术抽象接口。

针对不同的缓存技术需要实现不同的CacheManager:

  • EhCacheCacheManager 使用EhCache作为缓存技术
  • GuavaCacheManager 使用Google的GuavaCache作为缓存技术
  • RedisCacheManager 使用Redis作为缓存技术

这里我们就用RedisCacheManager作为缓存技术来练习。

二、Spring Cache的使用

1. 导入依赖

在pom.xml文件中添加redis依赖和spring提供的cache依赖。
代码如下:

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

2. 配置信息

在application.yml文件中添加redis的一些基础信息,和连接Mysql数据库一样将基本的密码,端口等配置上去。time-to-live: 1800000的单位为秒,表示缓存中存入的数据在多少秒后清除。

代码如下:

spring:redis:host: localhostport: 6379#password:database: 0cache:redis:time-to-live: 1800000

3. 在启动类上添加注解

在启动类上添加开启缓存注解功能的注解:@EnableCaching

代码如下:

@EnableCaching //开启缓存注解功能
public class MyApplication {public static void main(String[] args) {SpringApplication.run(MyApplication.class,args);log.info("项目启动成功...");}
}

4. 添加注解

4.1 @CachePut注解

@CachePut注解在执行添加操作时,将新的数据添加到Redis缓存中,以便于数据库查询的值和展示的数据一致。Redis底层执行的是set操作。

注解里的参数第一个数该缓存的名称“value”,第二个参数是设置一个key(作为缓存数据的key)。如下述代码就会将新增的这条数据添加到Redis缓存中。

    @PostMapping@CachePut(value = "setmealCache",key = "#setmealDto.categoryId+'_'+#setmealDto.status")public R<String> save(@RequestBody SetmealDto setmealDto){setmealService.saveWithDish(setmealDto);return R.success("新增套餐成功");}

4.2 @CacheEvict注解

@CacheEvict注解执行修改、删除数据操作时删除对应的所有该名称(value=值)下的缓存数据,以便于数据库查询的值和展示的数据一致。Redis底层执行的是del(删除)操作。

下次在删除修改完后查询时就会重新执行sql语句去数据库中查询数据,这样就使得数据库与缓存数据一致。

    @PutMapping@CacheEvict(value = "setmealCache",allEntries = true)public R<String> update(@RequestBody SetmealDto setmealDto){setmealService.updateWithDish(setmealDto);return R.success("修改成功");}

4.3 @Cacheable注解

@Cacheable注解和上面的参数也是相同的,将查询的数据放到Redis中,所以Redis底层代码也是做的set操作。

    @GetMapping("/list")//将返回的结果存入redis缓存中@Cacheable(value = "setmealCache",key = "#setmeal.categoryId+'_'+#setmeal.status")public R<List<Setmeal>> list(Setmeal setmeal){LambdaQueryWrapper<Setmeal> queryWrapper=new LambdaQueryWrapper<>();queryWrapper.eq(setmeal.getCategoryId()!=null,Setmeal::getCategoryId,setmeal.getCategoryId());queryWrapper.eq(setmeal.getStatus()!=null,Setmeal::getStatus,setmeal.getStatus());queryWrapper.orderByDesc(Setmeal::getUpdateTime);List<Setmeal> list = setmealService.list(queryWrapper);return R.success(list);}

查看Redis存入的数据

在Redis中我们也可以看到和我们注解中的信息能够对应的上。
如下图所示:
在这里插入图片描述

总结

这就是Spring Cache框架的简单使用,可以更加快捷的将Redis缓存中的数据存入或删除。逻辑方面也不需要我们去编写(像以前在查询时先看缓存中是否有该数据,如果有直接返回数据,没有在进行sql语句查询数据库将数据返回并且存入Redis的逻辑)。学习完spring cache框架后我们只需要在方法上加注解设置value、key的值就可以了。
心态还需努力呀~

http://www.yidumall.com/news/101037.html

相关文章:

  • 潍坊网站做的好的公司关键词优化哪个好
  • 漳州城乡住房建设部网站有免费做网站的吗
  • 内部券网站怎么做微信软文推广怎么做
  • 怎么做网站链接的快捷方式sem竞价托管代运营
  • 做网站的能赚多少钱国际新闻大事
  • app开发公司名字网站页面排名优化
  • 灵溪网站建设企业推广方法
  • 手机wap网站怎么做做关键词优化
  • a5网站诊断免费的电脑优化软件
  • 太原市网站建设网站35个成功的市场营销策划案例
  • 专业网站建设供应商王通seo
  • wordpress avada汉化天津seo选天津旗舰科技a
  • 几个做ppt的网站知乎百度搜索风云榜人物
  • 阿里巴巴网站做推广效果怎么样如何搜索网页关键词
  • 做的最好的宠物网站厦门seo网站推广
  • 宁晋县建设局网站网站百度手机端排名怎么查询
  • 用织梦模板做网站鸣蝉智能建站
  • 建设工程规范在哪个网站下载网站快速排名
  • 怎么看网站的建站公司是哪个seo课程多少钱
  • 微信公众号 做不了微网站昆明seo优化
  • 网站建设代码标准百度公司招聘条件
  • 网页设计学什么软件重庆seo推广运营
  • 做红酒网站网推平台
  • 网站建设的价位佛山做seo推广公司
  • html中文网站作业最佳磁力吧ciliba搜索引擎
  • 平板电脑 做网站开发太原seo公司
  • 个性化定制服务的网站品牌推广案例
  • 免费做计算机题的网站厦门seo网站优化
  • 网站怎么做展现量微信搜一搜seo优化
  • 网站建设四不问题拉新推广平台有哪些