SpringBoot企业级开发教程第6章-SpringBoot缓存管理课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《SpringBoot企业级开发教程第6章-SpringBoot缓存管理课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SpringBoot 企业级 开发 教程 缓存 管理 课件
- 资源描述:
-
1、第6章 Spring Boot缓存管理Spring Boot默认缓存管理Spring Boot 缓存注解介绍Spring Boot整合Redis缓存实现自定义Redis缓存序列机制 学习目标了解Spring Boot的默认缓存12 熟悉Spring Boot中Redis的缓存机制及实现 掌握Spring Boot 整合Redis的缓存实现。3了 解熟 悉掌 握 目录Spring Boot 缓存注解介绍6.26.26.16.1Spring Boot 默认缓存管理6.36.3Spring Boot整合Redis缓存实现自定义Redis缓存序列化机制6.46.4点击查看本案例相关知识点点击查看本案例
2、相关知识点点击查看本案例相关知识点6.1 Spring Boot默认缓存管理 知识架构12基础环境搭建Spring Boot默认缓存体验6.3 Spring Boot 整合整合Redis缓存实现缓存实现 知识架构123SpringBoot支持的缓存组件基于注解的Redis缓存实现基于API的Redis缓存实现6.4自定义自定义Redis缓存序列化机制缓存序列化机制 知识架构12自定义Redis Template自定义RedisCacheManager本章将针对Spring Boot的缓存管理进行介绍,并完成与Redis缓存中间件的整合使用。章节概要 缓存是分布式系统中的重要组件,主要解决数据库
3、数据的高并发访问。在实际开发中,尤其是用户访问量较大的网站,用户对高频热点数据的访问非常频繁,为了提高服务器访问性能、减少数据库的压力、提高用户体验,使用缓存显得尤为重要。6.1 SpringBoot缓存管理基础环境搭建整合步骤:1.准备数据,创建项目2.编写配置文件3.项目测试 6.1 SpringBoot缓存管理基础环境搭建 这里使用这里使用之前之前创建的创建的springbootdataspringbootdata的数据库,该数据库有两个表的数据库,该数据库有两个表 t_articlet_article和和t_commentt_comment,这两个表预先插入几条测试数据。,这两个表预先
4、插入几条测试数据。使用使用Spring Spring InitializrInitializr方式创建一个方式创建一个Spring BootSpring Boot项目,在项目,在DependenciesDependencies依赖选择项中依赖选择项中JPAJPA依赖、依赖、MySQLMySQL依赖和依赖和WebWeb依赖依赖。准备数据,创建项目1 1、创建创建Spring BootSpring Boot项目,引入相关依赖项目,引入相关依赖 6.1 SpringBoot缓存管理基础环境搭建2 2、编写数据库表对应的实体类(省略、编写数据库表对应的实体类(省略getXXgetXX()()、setX
5、XsetXX()()方法和方法和toStringtoString()()方法方法)Entity(name=t_comment)public class Comment Id GeneratedValue(strategy=GenerationType.IDENTITY)private Integer id;private String content;private String author;Column(name=a_id)private Integer aId;准备数据,创建项目 6.1 SpringBoot缓存管理基础环境搭建3 3、编写数据库操作的、编写数据库操作的Repositor
6、yRepository接口文件接口文件CommentRepository CommentRepository public interface CommentRepository extends JpaRepository Transactional Modifying Query(UPDATE t_comment c SET c.author=?1 WHERE c.id=?2)public int updateComment(String author,Integer id);准备数据,创建项目 6.1 SpringBoot缓存管理基础环境搭建4 4、编写业务操作类、编写业务操作类Servi
7、ceService文件文件CommentServiceCommentService,在该类中编写数据的查询、修,在该类中编写数据的查询、修改和删除操作改和删除操作 Autowiredprivate CommentRepository commentRepository;public Comment findById(int comment_id)Optional optional=commentRepository.findById(comment_id);if(optional.isPresent()return optional.get();return null;准备数据,创建项目 6.
8、1 SpringBoot缓存管理基础环境搭建public Comment updateComment(Comment comment)commentRepository.updateComment(comment.getAuthor(),comment.getaId();return comment;public void deleteComment(int comment_id)commentRepository.deleteById(comment_id);准备数据,创建项目 6.1 SpringBoot缓存管理基础环境搭建5 5、编写、编写WebWeb访问层访问层ControllerCo
9、ntroller文件文件CommentControllerCommentController,使用注入的使用注入的CommentServiceCommentService实例对象编写对实例对象编写对CommentComment评论数据的查询、修改和删除方法评论数据的查询、修改和删除方法。(具体代码见备注具体代码见备注)准备数据,创建项目 6.1 SpringBoot缓存管理基础环境搭建spring.datasource.url=jdbc:mysql:/localhost:3306/springbootdata?serverTimezone=UTCspring.datasource.userna
10、me=rootspring.datasource.password=rootspring.jpa.show-sql=true 编写配置文件application.properties 6.1 SpringBoot缓存管理基础环境搭建项目启动成功后,在浏览器上访问项目启动成功后,在浏览器上访问http:/localhost:8080/get/1http:/localhost:8080/get/1,浏览器每刷新浏览器每刷新一次,控制台会新输出一条一次,控制台会新输出一条SQLSQL语句语句每执行一次查询操作每执行一次查询操作,都会访问一次数据库并执行一次都会访问一次数据库并执行一次SQLSQL语句
11、语句。项目测试 6.1 SpringBoot缓存管理Spring Boot 默认缓存体验1.使用EnableCaching注解开启基于注解的缓存支持2.使用Cacheable注解对数据操作方法进行缓存管理3.Spring Boot默认缓存测试搭建步骤:6.1 SpringBoot缓存管理Spring Boot 默认缓存体验EnableCaching SpringBootApplicationpublic class Chapter06Application public static void main(String args)SpringApplication.run(Chapter06Ap
12、plication.class,args);使用EnableCaching注解开启基于注解的缓存支持 6.1 SpringBoot缓存管理Spring Boot 默认缓存体验Cacheable(cacheNames=comment)public Comment findById(int comment_id)Optional optional=commentRepository.findById(comment_id);if(optional.isPresent()return optional.get();return null;使用Cacheable注解对数据操作方法进行缓存管理 6.1
13、SpringBoot缓存管理项目启动成功后,在浏览器上访问项目启动成功后,在浏览器上访问http:/localhost:8080/get/1http:/localhost:8080/get/1,不论浏览器不论浏览器刷新多少次,页面的查询结果都会显示同一条数据刷新多少次,页面的查询结果都会显示同一条数据重复进行同样的查询操作,数据库只执行了一次重复进行同样的查询操作,数据库只执行了一次SQLSQL查询语句,说明项目开启的查询语句,说明项目开启的默认缓存支持已经生效。默认缓存支持已经生效。Spring Boot 默认缓存体验 项目测试 6.2 SpringBoot缓存注解Spring Boot 缓
14、存注解介绍1.EnableCaching注解注解2.Cacheable注解注解3.CachePut注解注解4.CacheEvict注解注解5.Caching注解注解6.CacheConfig注解注解主要注解 6.2 SpringBoot缓存注解Spring Boot 缓存注解介绍EnableCaching是由Spring框架提供的,Spring Boot框架对该注解进行了继承,该注解需要配置在类上(在Spring Boot中,通常配置在项目启动类上),用于开启基于注解的缓存支持。EnableCaching注解简介 6.2 SpringBoot缓存注解Spring Boot 缓存注解介绍Cach
15、eable注解也是由Spring框架提供的,可以作用于类或方法(通常用在数据查询方法上),用于对方法结果进行缓存存储。Cacheable注解的执行顺序是,先进行缓存查询,如果为空则进行方法查询,并将结果进行缓存;如果缓存中有数据,不进行方法查询,而是直接使用缓存数据。Cacheable注解简介 6.2 SpringBoot缓存注解Spring Boot 缓存注解介绍属性名说明value/cacheNames指定缓存空间的名称,必配属性。这两个属性二选一使用key指定缓存数据的key,默认使用方法参数值,可以使用SpEL表达式keyGenerator指定缓存数据的key的生成器,与key属性二选
16、一使用cacheManager指定缓存管理器cacheResolver指定缓存解析器,与cacheManager属性二选一使用condition指定在符合某条件下,进行数据缓存unless指定在符合某条件下,不进行数据缓存sync指定是否使用异步缓存。默认falseCacheable注解(属性)6.2 SpringBoot缓存注解Spring Boot 缓存注解介绍CachePut注解是由Spring框架提供的,可以作用于类或方法(通常用在数据更新方法上),该注解的作用是更新缓存数据。CachePut注解的执行顺序是,先进行方法调用,然后将方法结果更新到缓存中。CachePut注解也提供了多个
17、属性,这些属性与Cacheable注解的属性完全相同。CachePut注解简介 6.2 SpringBoot缓存注解Spring Boot 缓存注解介绍CacheEvict注解是由Spring框架提供的,可以作用于类或方法(通常用在数据删除方法上),该注解的作用是删除缓存数据。CacheEvict注解的默认执行顺序是,先进行方法调用,然后将缓存进行清除。CacheEvict注解也提供了多个属性,这些属性与Cacheable注解的属性基本相同,除此之外,还额外提供了两个特殊属性allEntries和beforeInvocation。CacheEvict注解简介 6.2 SpringBoot缓存注
18、解Spring Boot 缓存注解介绍(1)allEntries属性 allEntries属性表示是否清除指定缓存空间中的所有缓存数据,默认值为false(即默认只删除指定key对应的缓存数据)。(2)beforeInvocation属性 beforeInvocation属性表示是否在方法执行之前进行缓存清除,默认值为false(即默认在执行方法后再进行缓存清除)。CacheEvict注解(属性)6.2 SpringBoot缓存注解Spring Boot 缓存注解介绍Caching注解用于针对复杂规则的数据缓存管理,可以作用于类或方法,在Caching注解内部包含有Cacheable、put和
19、evict三个属性,分别对应于Cacheable、CachePut和CacheEvict三个注解。Caching注解简介 6.2 SpringBoot缓存注解Spring Boot 缓存注解介绍Caching(cacheable=Cacheable(cacheNames=comment,key=#id),put=CachePut(cacheNames=comment,key=#result.author)public Comment getComment(int comment_id)return commentRepository.findById(comment_id).get();Cac
20、hing注解使用(示例代码):6.2 SpringBoot缓存注解Spring Boot 缓存注解介绍CacheConfig注解使用在类上,主要用于统筹管理类中所有使用Cacheable、CachePut和CacheEvict注解标注方法中的公共属性,这些公共属性包括有cacheNames、keyGenerator、cacheManager和cacheResolver。CacheConfig注解简介 6.2 SpringBoot缓存注解Spring Boot 缓存注解介绍CacheConfig(cacheNames=comment)Servicepublic class CommentServ
21、ice Autowired private CommentRepository commentRepository;Cacheable public Comment findById(int comment_id)Comment comment=commentRepository.findById(comment_id).get();return comment;.CacheConfig注解使用(示例代码):6.3SpringBoot整合RedisSpring Boot支持的缓存组件(1)Generic(2)JCache(JSR-107)(EhCache 3、Hazelcast、Infinis
22、pan等等)(3)EhCache 2.x(4)Hazelcast(5)Infinispan(6)Couchbase(7)Redis(8)Caffeine(9)Simple(默认)(默认)Spring Boot支持的缓存组件有:6.3SpringBoot整合Redis基于注解的Redis缓存实现1.添加Spring Data Redis 依赖启动器2.Redis服务连接配置3.使用Cacheable、CachePut、CacheEvict注解定制缓存管理4.基于注解的Redis查询缓存测试5.将缓存对象实现序列化6.基于注解的Redis缓存查询测试7.基于注解的Redis缓存更新测试8.基于注解
23、的Redis缓存删除测试搭建步骤:6.3SpringBoot整合Redis基于注解的Redis缓存实现org.springframework.bootspring-boot-starter-data-redis 添加Spring Data Redis 依赖启动器 6.3SpringBoot整合Redis基于注解的Redis缓存实现spring.redis.host=127.0.0.1spring.redis.port=6379spring.redis.password=Redis服务连接配置 6.3SpringBoot整合Redis基于注解的Redis缓存实现对对CommentServiceC
24、ommentService类中的方法进行修改使用类中的方法进行修改使用CacheableCacheable、CachePutCachePut、CacheEvictCacheEvict三三个注解定制缓存管理个注解定制缓存管理,修改后的方法如下,修改后的方法如下Autowiredprivate CommentRepository commentRepository;Cacheable(cacheNames=comment,unless=#result=null)public Comment findById(int comment_id)Optional optional=commentRepos
25、itory.findById(comment_id);if(optional.isPresent()return optional.get();return null;使用注解定制缓存管理 6.3SpringBoot整合Redis基于注解的Redis缓存实现CachePut(cacheNames=comment,key=#result.id)public Comment updateComment(Comment comment)commentRepository.updateComment(comment.getAuthor(),comment.getaId();return comment
展开阅读全文