其他分享
首页 > 其他分享> > SpringBoot缓存管理

SpringBoot缓存管理

作者:互联网

实际开发中,尤其是用户访问量较大的网站,为了提高服务器访问性能、减少数据库的压力、提高用户体验,使用缓存显得尤为重要。Spring Boot对缓存提供了良好的支持。

1.1Springboot默认缓存

Spring框架支持透明地向应用程序添加缓存并对缓存进行管理,其管理缓存的核心是将缓存应用于操作数据的方法中,从而减少操作数据的次数,同时不会对程序本身造成任何干扰。Spring Boot继承了Spring框架的缓存管理功能,通过使用@EnableCaching注解开启基于注解的缓存支持,Spring Boot 可以启动缓存管理的自动化配置
创建项目web依赖和sql依赖
在这里插入图片描述
2个表
在这里插入图片描述

实体类Comment在这里插入图片描述
Repository接口
在这里插入图片描述

## CommentService业务类

在这里插入图片描述
Controller类在这里插入图片描述

全局配置文件连接数据库

# MySQL数据库连接配置
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
# 显示使用JPA进行数据库查询的SQL语句
spring.jpa.show-sql=true


在浏览器访问
查询id为1的用户评论信息。不论浏览器刷新多少次,访问同一个用户评论信息,页面的查询结果都会显示同一条数据,但是,浏览器每刷新一次,控制台会新输出一条SQL语句

在这里插入图片描述
在这里插入图片描述
因为没有在Spring Boot 项目中开启缓存管理,虽然数据表中的数据没有发生变化,但是每执行一次查询操作(本质是执行同样的SQL语句),都会访问一次数据库并执行一次SQL语句。随着时间的积累,系统的用户不断增加,数据规模越来越大,数据库的操作会直接影响用户的使用体验,此时使用缓存往往是解决这一问题非常好的一种手段。

SpringBoot开启默认缓存

1在启动类上加@EnableCaching 注解在这里插入图片描述
2在service的查询方法上加注解@Cacheable,该注解的作用是将查询结果Comment存放在Spring Boot 默认缓存中名称为comment的名称空间( namespace )中,对应缓存的唯一标识 (即缓存数据对应的主键key )
默认为方法参数comment jid 的值。

在这里插入图片描述
此时访问浏览器。不管刷新多少次,页面查询结果只有一条,且控制台也只有一条sql语句
在这里插入图片描述
开启默认缓存已生效

1.2缓存注解介绍

1@EnableCaching注解
@EnableCaching是由Spring框架提供的,Spring Boot框架对该注解进行了继承,该注解需要配置在类上(在Spring Boot中,通常配置在项目启动类上),用于开启基于注解的缓存支持。

2 @Cacheable 注解
@Cacheable注解也是由Spring框架提供的,通常用在数据查询方法上.用于对方法的查询结果进行缓存存储。@Cacheable 注解的执行顺序是,先进行缓存查询,如果为空则进行方法查询,并将结果进行缓存;如果缓存中有数据,不进行方法查询,而是直接使用缓存数据。
@Cacheable属性如下
在这里插入图片描述
3@CachePut注解
@CachePut注解是由Spring框架提供的,可以作用于类或方法(通常用在数据更新方法上),
该注解的作用是更新缓存数据。@CachePut 注解的执行顺序是,先进行方法调用,然后将方法
结果更新到缓存中
。@CachePut注解也提供了多个属性,这些属性与@Cacheable注解的属性完全相同。

4@CacheEvict注解
@CacheEvict注解是由Spring框架提供的,可以作用于类或方法(通常用在数据删除方法上),该注解的作用是删除缓存数据。@CacheEvict 注解的默认执行顺序是,先进行方法调用,然后清除缓存

5@Caching注解
如果处理复杂规则的数据缓存可以使用@Caching注解,该注解作用于类或者方法。@Caching注解包含cacheable、 put和evict 三个属性,它们的作用等同于@Cacheable、@CachePut和@CacheEvict,示例代码如下在这里插入图片描述
6@CacheConfig注解
@CacheConfig注解作用于类,主要用于统筹管理类中所有使用@Cacheable、@CachePut和@CacheEvict注解标注的方法中的公共属性,这些公共属性包括cacheNames、keyGenerator、cacheManager和cacheResolver,示例代码如下。
在这里插入图片描述

3SpringBoot整合Redis缓存实现

3.1基于注解的Redis缓存实现
1添加Redis依赖启动器

 <!-- 引入整合Redis缓存的依赖启动器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

2全局配置文件添加Redis服务的连接配置
在这里插入图片描述
修改Service类中方法
在这里插入图片描述
访问浏览器,出现异常在这里插入图片描述

Coment实体类对象进行缓存存储时必须实现序列化,否则异常
修改类,实现Serializable接口
在这里插入图片描述
访问浏览器查询,得到结果,;在配置了Redis缓存组件后,重复进行同样的查询操作,数据库只执行了一次SQL语句
在这里插入图片描述
查询出来的评论存储到了Comment下,其中缓存数据的唯一标识 key值是以“ 名称空间
comment:+参数值”( comment:1 )的字符串形式体现的,而value值则是以经过JDK默认序
列格式化后的HEX格式存储
在这里插入图片描述
先通过浏览器访问htp://ocalhost:8080/update/1/shitou",更新id为1的评论作者名为shitou;接着继续访问http://ocalhost:8080/get/1" ,查询id为1的用户评论信息
在这里插入图片描述

4基于API的Redis缓存实现

标签:缓存,SpringBoot,管理,Spring,Boot,查询,Cacheable,注解
来源: https://blog.csdn.net/weixin_45991004/article/details/120428070