成都网站建设设计

将想法与焦点和您一起共享

【瑞吉外卖之SpringCache框架】-创新互联

此笔记内容为黑马瑞吉外卖项目的SpringCache框架部分。

成都创新互联专业为企业提供深州网站建设、深州做网站、深州网站设计、深州网站制作等企业网站建设、网页设计与制作、深州企业网站模板建站服务,10余年深州做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。

目录

一、Spring Cache介绍

二、Spring Cache常用注解

三、Spring Cache使用方式

入门使用

@CachePut

@CacheEvict  

@Cacheable

使用Redis来作为缓存产品

缓存套餐数据

实现思路

代码改造


一、Spring Cache介绍

Spring cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。

Spring Cache提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。

CacheManager是Spring提供的各种缓存技术抽象接口。

针对不同的缓存技术需要实现不同的CacheManager:

二、Spring Cache常用注解

在spring boot项目中,使用缓存技术只需在项目中导入相关缓存技术的依赖包,并在启动类上使用@EnableCaching开启缓存支持即可。

例如,使用Redis作为缓存技术,只需要导入Spring data Redis的maven坐标即可。

三、Spring Cache使用方式
入门使用

引入spring-boot-starter-web的包时,SpringCache的一些基础api就在里面的spring-context包下。

以对用户表进行CRUD操作作为案例。

注意:这里的User类需要实现序列化接口,否者无法缓存。

它的实现类是ConcurrentMapCacheManager

在启动类加入@EnableCaching注解

@CachePut

key可用 :#result返回值, #方法参数(#user对应方法参数的user)...

在运行了后,方法返回值也就是用户的数据就缓存到了Map中。

@CacheEvict  

执行完后,发现对应key的缓存数据已被删除掉了。

@Cacheable

这里感觉可以存入空数据比较好,是解决缓存穿透的方法之一。

PS:由于低层是用Map来存的,重启服务之后缓存数据就不存在了。(改进使用Redis来缓存数据)


使用Redis来作为缓存产品

在Spring Boot项目中使用Spring Cache的操作步骤(使用redis缓存技术);

1、导入maven坐标

spring-boot-starter-data-redis、spring-boot-starter-cache

2、配置application.yml

spring:
    cache:
        redis:
            time-to-live: 1800000#设置缓存有效期

3、在启动类上加入@EnableCaching注解,开启缓存注解功能

4、在Controller的方法上加入@Cacheable、@CacheEvict等注解,进行缓存操作

缓存套餐数据 实现思路

前面我们已经实现了移动端套餐查看功能,对应的服务端方法为SetmealController的list方法,此方法会根据前端提交的查询条件进行数据库查询操作。在高并发的情况下,频繁查询数据库会导致系统性能下降,服务端响应时间增长。现在需要对此方法进行缓存优化,提高系统的性能。

具体的实现思路如下:

1、导入Spring Cache和Redis相关maven坐标

2、在application.yml中配置缓存数据的过期时间

3、在启动类上加入@EnableCaching注解,开启缓存注解功能

4、在SetmealController的list方法上加入@Cacheable注解

5、在SetmealController的save和delete方法上加入CacheEvict注解

代码改造

1.在pom.xml文件中导入maven坐标

org.springframework.bootspring-boot-starter-cache

2.在application.yml中配置缓存数据过期时间

cache:
    redis:
        time-to-live: 1800000 #设置过期时间3分钟 单位毫秒

3.在启动类@EnableCaching注解

4.在list方法上添加注解,实现在redis里添加缓存

@Cacheable(value = "setmealCache",key = "#setmeal.categoryId+'_'+#setmeal.status")

5.在save,delete方法上添加注解,清除缓存

注意:R类要实现序列化接口,否者无法缓存报错

结束!

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站题目:【瑞吉外卖之SpringCache框架】-创新互联
本文来源:http://chengdu.cdxwcx.cn/article/dedccd.html