SpringBoot怎么整合Spring Cache实现Redis缓存


今天小编给大家分享一下SpringBoot怎么整合SpringCache实现Redis缓存的相关知识点,内容详细,逻免费云主机域名辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。Spring Cache 提供了一层抽象,底层可以切换不同的cache实现。具体就是通过 CacheManager 接口来统一不同的缓存技术。CacheManager 是 Spring 提供的各种缓存技术抽象接口,这是默认的缓存技术,是缓存在Map中的,这也说明当服务挂掉的时候,缓存的数据就没了。针对不同的缓存技术需要实现不同的 CacheManager在 Spring Boot 项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用 @EnableCaching 开启缓存支持即可。例如,使用 Redis 作为缓存技术,只需要导入 Spring data Redis 的 maven 坐标即可。常用的注解有如下几个:该注解的主要功能就是开启缓存注解的功能,让 Spring Cache 中的其他注解生效。使用方式也十分简单,直接将其加在项目的启动类上方即可。@Cacheable注解主要是在方法执行前 先查看缓存中是否有数据。如果有数据,则直接返回缓存数据;若没有数据,调用方法并将方法返回值放到缓存中。注解中的参数传递主要使用的是**SpEL(Spring Expression Language)**对数据进行获取传递,这有点类似于JSP中的EL表达式,常用方式如下几种:“#p0”:获取参数列表中的第一个参数。其中的“#p”为固定写法,0为下标,代表第一个;“#root.args[0]”:获取方法中的第一个参数。其中0为下标,代表第一个。“#user.id”:获取参数 user 的 id 属性。注意的是这里的 user 必须要和参数列表中的参数名一致“#result.id”:获取返回值中的 id 属性。来自Spring Cache源码:Spring Expression Language (SpEL) expression used for making the method在@Cacheable注解中有几种常用的属性可进行需求性设置:value:缓存的名称,每个缓存名称下面可以有多个 keykey:缓存的key。condition:条件判断,满足条件时对数据进行缓存,值得注意的是该参数在Redis中无效unless:条件判断,满足条件时则不对数据进行缓存,Redis中可使用该参数替代condition@CachPut注解主要是将方法的返回值放到缓存中。这里同样是使用SpEL获取数据,常用的属性如下:value:缓存的名称,每个缓存名称下面可以有多个 keykey:缓存的key。condition:条件判断,满足条件时对数据进行缓存,值得注意的是该参数在Redis中无效unless:条件判断,满足条件时则不对数据进行缓存,Redis中可使用该参数替代condition@CacheeEvict主要是将一条或多条数据从缓存中删除,同样使用SpEL获取数据,常用的属性如下:value:缓存的名称,每个缓存名称下面可以有多个 keykey:缓存的key。condition:条件判断,满足条件时对数据进行缓存,值得注意的是该参数在Redis中无效unless:条件判断,满足条件时则不对数据进行缓存,Redis中可使用该参数替代condition因为 Spring 默认的缓存技术无法持久化保存缓存数据,即服务挂了缓存也挂了,因此就需要使用Redis进行操作(其实也是因为学习了Redis)前面的SpringBoot整合Redis缓存验证码里面有记录着一些Redis的基本操作。导入 maven 坐标:spring-boot-starter-data-redis、spring-boot-starter-cachespring:
redis:
host: localhost
port: 6379
password: 123456
database: 0
cache:
redis:
time-to-live: 1800000 # 设置缓存有效期在启动类 com/itheima/CacheDemoApplication.java 上加入 @EnableCaching 注解,开启缓存注解功能这里提一下有个坑就是使用的缓存时,返回值必须实现 Serializable 序列化接口,否则将会报错。这是因为在 NoSql 数据库中,并没有与我们 Java 基本类型对应的数据结构,所以在往 NoSql 数据库中存储时,我们就必须将对象进行序列化,同时在网络传输中我们要注意到两个应用中 javabean 的 serialVersionUID 要保持一致,不然就不能正常的进行反序列化。这里用到了一个新属性allEntries,其是boolean类型,表示是否需要清除缓存中的所有元素。默认为false,表示不需要。当指定了 allEntries 为 true 时,Spring Cache将忽略指定的 key。有的时候我们需要 Cache 一下清除所有的元素,这比一个一个清除元素更有效率。代码编写完成之后,重启工程,然后访问后台管理系统,对套餐数据进行新增以及删除,而后观察Redis中的数据发现写的代码是能正常跑到!成功!以上就是“SpringBoot怎么整合SpringCache实现Redis缓存”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注百云主机行业资讯频道。

相关推荐: python面积图之怎么实现曲线图的填充

本篇内容主要讲解“python面积图之怎么实现曲线图的填充”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python面积图之怎么实现曲线图的填充”吧!用法:参数说明:当然这样时没有多大意义的,只是想展示出一个比较明…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/18 18:42
下一篇 03/18 18:43

相关推荐