ImageVerifierCode 换一换
格式:PPT , 页数:61 ,大小:2.35MB ,
文档编号:3573160      下载积分:28 文币
快捷下载
登录下载
邮箱/手机:
温馨提示:
系统将以此处填写的邮箱或者手机号生成账号和密码,方便再次下载。 如填写123,账号和密码都是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

优惠套餐
 

温馨提示:若手机下载失败,请复制以下地址【https://www.163wenku.com/d-3573160.html】到电脑浏览器->登陆(账号密码均为手机号或邮箱;不要扫码登陆)->重新下载(不再收费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  
下载须知

1: 试题类文档的标题没说有答案,则无答案;主观题也可能无答案。PPT的音视频可能无法播放。 请谨慎下单,一旦售出,概不退换。
2: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
3: 本文为用户(三亚风情)主动上传,所有收益归该用户。163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

1,本文(SpringBoot企业级开发教程第6章-SpringBoot缓存管理课件.ppt)为本站会员(三亚风情)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!

SpringBoot企业级开发教程第6章-SpringBoot缓存管理课件.ppt

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

26、;CacheEvict(cacheNames=comment)public void deleteComment(int comment_id)commentRepository.deleteById(comment_id);使用注解定制缓存管理 6.3SpringBoot整合Redis基于注解的Redis缓存实现项目启动成功后,通过浏览器访问项目启动成功后,通过浏览器访问http:/localhost:8080/get/1http:/localhost:8080/get/1 基于注解的Redis查询缓存测试 6.3SpringBoot整合Redis基于注解的Redis缓存实现Entity(n

27、ame=t_comment)public class Comment implements Serializable Id GeneratedValue(strategy=GenerationType.IDENTITY)private Integer id;private String content;private String author;Column(name=a_id)private Integer aId;省略属性的getXX()、setXX()方法和toString()方法 将缓存对象实现序列化 6.3SpringBoot整合Redis基于注解的Redis缓存实现项目启动成功后,

28、通过浏览器访问项目启动成功后,通过浏览器访问http:/localhost:8080/get/1http:/localhost:8080/get/1,并重复刷新并重复刷新浏览器查询同一条数据信息浏览器查询同一条数据信息重复进行同样的查询操作,数据库只执行了一次重复进行同样的查询操作,数据库只执行了一次SQLSQL语句语句 基于注解的Redis查询缓存测试 6.3SpringBoot整合Redis基于注解的Redis缓存实现打开打开RedisRedis客户端可视化管理工具客户端可视化管理工具RedisRedis Desktop Manager Desktop Manager连接本地启用的连接本地

29、启用的RedisRedis服务服务 基于注解的Redis查询缓存测试 6.3SpringBoot整合Redis基于注解的Redis缓存实现项目启动成功后,通过浏览器访问项目启动成功后,通过浏览器访问http:/localhost:8080/update/1/shitouhttp:/localhost:8080/update/1/shitou,接接着,继续访问着,继续访问http:/localhost:8080/get/1http:/localhost:8080/get/1执行执行updateCommentupdateComment()()方法更新方法更新idid为为1 1的数据时执行了一条更新

30、的数据时执行了一条更新SQLSQL语句,后续调语句,后续调用用findByIdfindById()()方法查询方法查询idid为为1 1的用户评论信息时没有执行查询的用户评论信息时没有执行查询SQLSQL语句语句。基于注解的Redis缓存更新测试 6.3SpringBoot整合Redis基于注解的Redis缓存实现项目启动成功后,通过浏览器访问项目启动成功后,通过浏览器访问http:/localhost:8080/delete/1http:/localhost:8080/delete/1,接着,继接着,继续访续访http:/localhost:8080/get/1http:/localhost

31、:8080/get/1 基于注解的Redis缓存删除测试 6.3SpringBoot整合Redis基于注解的Redis缓存实现通过通过RedisRedis客户端可视化管理工具客户端可视化管理工具RedisRedis Desktop Manager Desktop Manager查看对应数据删除后的缓查看对应数据删除后的缓存信息存信息 基于注解的Redis缓存删除测试 6.3SpringBoot整合Redis基于API的Redis缓存实现整合步骤:1.使用Redis API 进行业务数据缓存管理2.编写Web访问层Controller文件3.基于API的Redis缓存实现的相关配置 6.3Spr

32、ingBoot整合Redis基于API的Redis缓存实现编写一个进行业务处理的类编写一个进行业务处理的类ApiCommentServiceApiCommentService,使用使用 AutowiredAutowired注解注入注解注入RedisRedis APIAPI中常用的中常用的RedisTemplateRedisTemplate(类似于(类似于JavaJava基础基础APIAPI中的中的JdbcTemplateJdbcTemplate);然后在);然后在数据查询、修改和删除三个方法中,根据业务需求分别进行数据缓存查询、缓数据查询、修改和删除三个方法中,根据业务需求分别进行数据缓存查询

33、、缓存存储、缓存更新和缓存删除。同时,存存储、缓存更新和缓存删除。同时,CommentComment数据对应缓存管理的数据对应缓存管理的keykey值都手值都手动设置了一个前缀动设置了一个前缀“comment_comment_”,这是针对不同业务数据进行缓存管理设置的,这是针对不同业务数据进行缓存管理设置的唯一唯一keykey,避免与其他业务缓存数据的,避免与其他业务缓存数据的keykey重复。重复。(具体代码见备注具体代码见备注)使用Redis API 进行业务数据缓存管理 6.3SpringBoot整合Redis基于API的Redis缓存实现在类上加入了在类上加入了 RequestMapp

34、ingRequestMapping(“/(“/apiapi”)”)注解用于窄化请求,并通过注解用于窄化请求,并通过 AutowiredAutowired注解注入了新编写的注解注入了新编写的ApiCommentServiceApiCommentService实例对象,然后调用实例对象,然后调用ApiCommentServiceApiCommentService中中的相关方法进行数据查询、修改和删除。的相关方法进行数据查询、修改和删除。(具体代码见备注具体代码见备注)注:在类上加入RequestMapping(/api)注解用于窄化请求 编写Web访问层Controller文件ApiComment

35、Controller 6.3SpringBoot整合Redis基于API的Redis缓存实现1.基于API的Redis缓存实现不需要EnableCaching注解开启基于注解的缓存支持。2.基于API的Redis缓存实现需要在Spring Boot项目的pom.xml文件中引入Redis依赖启动器,并在配置文件中进行Redis服务连接配置,同时将进行数据存储的Comment实体类实现序列化接口。3.缓存测试与基于注解的Redis缓存实现的测试完全一样。基于API的Redis缓存实现的相关配置 6.4自定义Redis缓存序列化自定义RedisTemplate1.Redis API 默认序列化机制

36、2.自定义RedisTemplate序列化机制3.效果测试整合步骤:6.4自定义Redis缓存序列化自定义RedisTemplate基于基于RedisRedis API API的的RedisRedis缓存实现是使用缓存实现是使用RedisTemplateRedisTemplate模板进行数据缓存操作的,模板进行数据缓存操作的,这里打开这里打开RedisTemplateRedisTemplate类类,查看源码可知查看源码可知:1.1.使用使用RedisTemplateRedisTemplate进行进行RedisRedis数据缓存操作时,内部默认使用的是数据缓存操作时,内部默认使用的是JdkSer

37、ializationRedisSerializerJdkSerializationRedisSerializer序列化方式,所以进行数据缓存的实体序列化方式,所以进行数据缓存的实体类必须实现类必须实现JDKJDK自带的序列化接口(例如自带的序列化接口(例如SerializableSerializable););2.2.使用使用RedisTemplateRedisTemplate进行进行RedisRedis数据缓存操作时,如果自定义了缓存序列化方数据缓存操作时,如果自定义了缓存序列化方式式defaultSerializerdefaultSerializer,那么将使用自定义的序列化方式。,那么将

38、使用自定义的序列化方式。Redis API 默认序列化机制 6.4自定义Redis缓存序列化自定义RedisTemplate在项目中引入在项目中引入RedisRedis依赖后,依赖后,Spring BootSpring Boot提供的提供的RedisAutoConfigurationRedisAutoConfiguration自动配自动配置会生效。打开置会生效。打开RedisAutoConfigurationRedisAutoConfiguration类,查看内部源码中关于类,查看内部源码中关于RedisTemplateRedisTemplate的定义方式的定义方式可知:可知:a)a)在在Re

39、disRedis自动配置类中,通过自动配置类中,通过RedisRedis连接工厂连接工厂RedisConnectionFactoryRedisConnectionFactory初始化初始化了一个了一个RedisTemplateRedisTemplate;该类上方添加了;该类上方添加了 ConditionalOnMissingBeanConditionalOnMissingBean注解(注解(顾名思义,当某个顾名思义,当某个BeanBean不存在时生效),用来表明如果开发者自定义了一个不存在时生效),用来表明如果开发者自定义了一个名为名为redisTemplateredisTemplate的的B

40、eanBean,则该默认初始化的,则该默认初始化的RedisTemplateRedisTemplate会被覆盖。会被覆盖。b)b)如果想要使用自定义序列化方式的如果想要使用自定义序列化方式的RedisTemplateRedisTemplate进行数据缓存操作,可以参进行数据缓存操作,可以参考上述核心代码创建一个名为考上述核心代码创建一个名为redisTemplateredisTemplate的的BeanBean组件,并在该组件中设置组件,并在该组件中设置对应的对应的序列化序列化方式即可。方式即可。自定义RedisTemplate序列化机制 6.4自定义Redis缓存序列化自定义RedisTem

41、plate在项目中创建创建一个在项目中创建创建一个RedisRedis自定义配置类自定义配置类RedisConfigRedisConfig,通过通过ConfigurationConfiguration注注解定义了一个解定义了一个RedisConfigRedisConfig配置类,并使用配置类,并使用BeanBean注解注入了一个默认名称为方法注解注入了一个默认名称为方法名的名的redisTemplateredisTemplate组件(注意,该组件(注意,该BeanBean组件名称必须是组件名称必须是redisTemplateredisTemplate)。在定)。在定义的义的BeanBean组件

42、中,自定义了一个组件中,自定义了一个RedisTemplateRedisTemplate,使用自定义的,使用自定义的Jackson2JsonRedisSerializerJackson2JsonRedisSerializer数据序列化方式;在定制序列化方式中,定义了一数据序列化方式;在定制序列化方式中,定义了一个个ObjectMapperObjectMapper用于进行数据转换设置用于进行数据转换设置。(具体代码见备注具体代码见备注)自定义RedisTemplate序列化机制 6.4自定义Redis缓存序列化自定义RedisTemplate项目启动成功后,通过浏览器访问项目启动成功后,通过浏览

43、器访问http:/localhost:8080/api/get/3http:/localhost:8080/api/get/3,并,并重复重复刷新浏览器查看同一条数据信息刷新浏览器查看同一条数据信息执行执行findByIdfindById()()方法正确查询出用户评论信息方法正确查询出用户评论信息CommentComment,重复进行同样的查询操,重复进行同样的查询操作,数据库只执行了一次作,数据库只执行了一次SQLSQL语句语句 效果测试 6.4自定义Redis缓存序列化自定义RedisTemplate使用使用RedisRedis客户端可视化管理工具客户端可视化管理工具RedisRedis

44、Desktop Manager Desktop Manager查看缓存数据查看缓存数据缓存到Redis服务的数据已经使用了JSON格式存储展示 效果测试 6.4自定义Redis缓存序列化自定义RedisCacheManager1.Redis 注解默认序列化机制2.自定义RedisCacheManager3.效果测试搭建步骤:6.4自定义Redis缓存序列化自定义RedisCacheManager1.1.Spring BootSpring Boot整合整合RedisRedis组件提供的缓存自动配置类组件提供的缓存自动配置类RedisCacheConfigurationRedisCacheConf

45、iguration,其其内部内部是是通过通过RedisRedis连接工厂连接工厂RedisConnectionFactoryRedisConnectionFactory定义了一个缓存管理器定义了一个缓存管理器RedisCacheManagerRedisCacheManager;同时定制;同时定制RedisCacheManagerRedisCacheManager时,也默认使用了时,也默认使用了JdkSerializationRedisSerializerJdkSerializationRedisSerializer序列化方式。序列化方式。2.2.如果想要使用自定义序列化方式的如果想要使用自定义

46、序列化方式的RedisCacheManagerRedisCacheManager进行数据缓存操作,可以进行数据缓存操作,可以创建一个名为创建一个名为cacheManagercacheManager的的BeanBean组件组件,并在该组件中设置对应的,并在该组件中设置对应的序列化序列化方式方式即可。即可。Redis 注解默认序列化机制 6.4自定义Redis缓存序列化自定义RedisCacheManager在在RedisConfigRedisConfig类中添加方法类中添加方法cacheManagercacheManager,该方法主要由三部分组成,如下,该方法主要由三部分组成,如下RedisS

47、erializer strSerializer=new StringRedisSerializer();Jackson2JsonRedisSerializer jacksonSeial=new Jackson2JsonRedisSerializer(Object.class);ObjectMapper om=new ObjectMapper();om.setVisibility(PropertyAccessor.ALL,JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FIN

48、AL);jacksonSeial.setObjectMapper(om);自定义RedisCacheManager 6.4自定义Redis缓存序列化自定义RedisCacheManagerRedisCacheConfiguration config=RedisCacheConfiguration.defaultCacheConfig().entryTtl(Duration.ofDays(1).serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(strSerializer).serializeV

49、aluesWith(RedisSerializationContext.SerializationPair.fromSerializer(jacksonSeial).disableCachingNullValues();RedisCacheManager cacheManager=RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(config).build();return cacheManager;自定义RedisCacheManager 6.4自定义Redis缓存序列化项目启动成功后,通过浏览器访问项目启动成功后

50、,通过浏览器访问http:/localhost:8080/api/get/3http:/localhost:8080/api/get/3,并,并重复重复刷新浏览器查看同一条数据信息刷新浏览器查看同一条数据信息执行执行findByIdfindById()()方法正确查询出用户评论信息方法正确查询出用户评论信息CommentComment,重复进行同样的查询操作,重复进行同样的查询操作,数据库只执行了一次,数据库只执行了一次SQLSQL语句语句自定义RedisCacheManager 效果测试 6.4自定义Redis缓存序列化使用使用RedisRedis客户端可视化管理工具客户端可视化管理工具Re

侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|