springBoot缓存

一、缓存的作用:加快系统的访问,提升系统的性能,主要应用于高频热点数据、临时数据(验证码)

二、缓存规范:JSR107(整合难度大,应用少,更多使用的是spring缓存抽象,底层概念和JSR107是通用的)

java Caching定义了5个核心接口

1.CachingProvider:创建、配置、获取、管理、控制多个CacheManager,一个应用可以在运行期访问多个CachingProvider

2.CacheManager:创建、配置、获取、管理、控制多个唯一命名的Cache,一个CacheManager仅被一个CachingProvider拥有

3.Cache:类似Map的数据结构并临时存储以key为索引的值,一个Cache仅被一个CacheManager所拥有

4.Entry:存储在Cache中的key-value

5.Expiry:存储在Cache中一个定义的有效期,超过有效期为过期状态,不可访问、更新和删除。有效期可通过ExpiryPolicy设置

如果需导入JSR107,是要引入以下依赖:

三、Spring缓存抽象

1.Spring从3.1开始定义了org.springframework.cache.Cache和org.springframewok.cache.CacheManager接口来统一不同的缓存技术,并支持使用JCache(JSR-107)注解简化开发

2.Cache接口下Spring提供了各种xxxCache实现:如RedisCache、EhCacheCache、ConcurrentMapCache

3.除了缓存接口的实现,spring还提供相关注解来进行缓存

四、缓存注解

1.@Cacheable:对方法配置,根据方法的请求参数对结果进行缓存(查询)

2.@CacheEvict:清空缓存

3.@CachePut:保证方法调用,又希望结果被缓存(更新)

4.@EnableCaching:开启基于注解的缓存

5.keyGenerator:缓存数据时,key的生成策略

6.serialize:缓存数据时value序列化策略

五、安装mysql

1.安装好mysql,cmd进入到安装的mysql的bin目录

2.使用命令:mysql -u root -p

3.提示输入的密码,输入root对应的密码,进入到mysql

springBoot缓存_第1张图片

六、如何使用缓存

1.先引入mybatis和mysql依赖

springBoot缓存_第2张图片

2.配置,连接本地mysql

springBoot缓存_第3张图片

以下这个配置项连接mysql数据库的时候,会在控制台打印sql语句

3、建立好controlelr、service、mapper,

其中@MapperScan,扫描对应目录下的mapper

springBoot缓存_第4张图片

使用@Mapper和@Select,可直接在mapper文件,交互数据库进行查询

springBoot缓存_第5张图片

4.在service类中对方法进行缓存,这才完整的实现了一个简单的缓存查询业务

  springBoot缓存_第6张图片 

5.@Cacheable的属性介绍如下图

    springBoot缓存_第7张图片

  原理:

springBoot缓存_第8张图片

如何使用自定义的keyGenerater

1.配置keyGenerater

springBoot缓存_第9张图片

2.使用keyGenerater

springBoot缓存_第10张图片

6.使用@CachePut缓存

   1.作用:既调用方法,又更新缓存

   2.运行时机:先调用目标方法,再将目标方法的结果缓存起来

   3.操作注意:cacheNames和查询的要一致,说明同一个Cache,key和查询缓存也要保持一致

  springBoot缓存_第11张图片

7.使用@CacheEvict缓存

    1.清除缓存,一般方法里面同样是清除数据库

    2.代码操作

   springBoot缓存_第12张图片

   3.allEntries = true: 清除指定Cache里面所有key的缓存,默认是false

   4.beforeInvocation = true: 缓存的清除是否在方法之前执行,默认是在方法之后执行,如果出现异常就不会清除缓存 

8.@Caching

springBoot缓存_第13张图片

9.@CacheConfig 

在类上定义缓存,这样可以不用再每个方法定义了

springBoot缓存_第14张图片

你可能感兴趣的:(云化,java,缓存)