Spring Cache (基础知识+瑞吉外卖项目)

Spring Cache

基本介绍

Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
Spring Cache提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。
CacheManager是Spring提供的各种缓存技术抽象接口。
针对不同的缓存技术,需要实现不同的CacheManager:
Spring Cache (基础知识+瑞吉外卖项目)_第1张图片

注解

Spring Cache (基础知识+瑞吉外卖项目)_第2张图片

入门

导入pom依赖

如果是使用基础的,我们只需要导入这个pom依赖即可。如果使用redis缓存,还需要加其他依赖。
Spring Cache (基础知识+瑞吉外卖项目)_第3张图片

在启动类上,加上注解@EnableCaching

@CachePut添加缓存

CachePut将方法返回值放入缓存,这个注解一般写在add方法上。
其中参数value表示缓存的名称,每个缓存下面可以有多个key;key缓存的key

@CachePut(value="userCache",key="#result.id"

result表示的是返回值对象;而写user表示的是参数,与参数同名!
Spring Cache (基础知识+瑞吉外卖项目)_第4张图片
这种写法默认使用的是ConcurrentMapCacheManager,缓存是基于内存的,当服务器停掉,重新启动,里边就没有数据了。

@CacheEvict清除缓存

这个注解一般写在delete;update方法上去清除缓存
@CacheEvict清除指定缓存
value缓存的名称,每个缓存名称下面可以有多个key
key缓存的key
Spring Cache (基础知识+瑞吉外卖项目)_第5张图片
Spring Cache (基础知识+瑞吉外卖项目)_第6张图片

@Cacheable先判断在存储

这个注解写在get方法上。
@Cacheable先看缓存有没有数据,如果有数据,则直接返回缓存数据;如果没有,则调用方法并将返回值放在缓存中。
Spring Cache (基础知识+瑞吉外卖项目)_第7张图片
上边这么写,无论查出来有没有数据,都会存入缓存,value的值可能为null
下边这个会判断一下,返回值是不是为空,不为空才进行保存
Spring Cache (基础知识+瑞吉外卖项目)_第8张图片
上边那个有错误:是因为condition不能使用result
Spring Cache (基础知识+瑞吉外卖项目)_第9张图片

上边的缓存的底层都是基于map的,现在我们改变一下底层,让他基于redis

redis实现

Spring Cache (基础知识+瑞吉外卖项目)_第10张图片
导入这个依赖,实现类多一点,但是还是没有redis
再导入这个依赖,就有了
Spring Cache (基础知识+瑞吉外卖项目)_第11张图片
Spring Cache (基础知识+瑞吉外卖项目)_第12张图片
Spring Cache (基础知识+瑞吉外卖项目)_第13张图片
需要注意的是,添加缓存的时候,返回的那个结果,一定要实现序列化接口,要不会报错!!!
添加缓存-------查询方法上

 @Cacheable(value="setmealCache",key = "#setmeal.categoryId")

删除缓存全部数据------------修改删除和新增方法上

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

你可能感兴趣的:(springboot,spring,java,后端)