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

Spring Cache

基本介绍

Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
Spring Cache提供了一层抽象,底层可以切换不同的cache实现。具体就是通过CacheManager接口来统一不同的缓存技术。
CacheManager是Spring提供的各种缓存技术抽象接口。
针对不同的缓存技术,需要实现不同的CacheManager:
在这里插入图片描述

注解

在这里插入图片描述

入门

导入pom依赖

如果是使用基础的,我们只需要导入这个pom依赖即可。如果使用redis缓存,还需要加其他依赖。
在这里插入图片描述

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

@CachePut添加缓存

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

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

result表示的是返回值对象;而写user表示的是参数,与参数同名!
在这里插入图片描述
这种写法默认使用的是ConcurrentMapCacheManager,缓存是基于内存的,当服务器停掉,重新启动,里边就没有数据了。

@CacheEvict清除缓存

这个注解一般写在delete;update方法上去清除缓存
@CacheEvict清除指定缓存
value缓存的名称,每个缓存名称下面可以有多个key
key缓存的key
在这里插入图片描述
在这里插入图片描述

@Cacheable先判断在存储

这个注解写在get方法上。
@Cacheable先看缓存有没有数据,如果有数据,则直接返回缓存数据;如果没有,则调用方法并将返回值放在缓存中。
在这里插入图片描述
上边这么写,无论查出来有没有数据,都会存入缓存,value的值可能为null
下边这个会判断一下,返回值是不是为空,不为空才进行保存
在这里插入图片描述
上边那个有错误:是因为condition不能使用result
在这里插入图片描述

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

redis实现

在这里插入图片描述
导入这个依赖,实现类多一点,但是还是没有redis
再导入这个依赖,就有了
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
需要注意的是,添加缓存的时候,返回的那个结果,一定要实现序列化接口,要不会报错!!!
添加缓存-------查询方法上

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

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

@CacheEvict(value = "setmealCache",allEntries = true)
@Cacheable(value="setmealCache",key = "#setmeal.categoryId+'_'+#setmeal.status")
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值