缓存套餐
Spring Cache
Spring Cache是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。
Spring Cache提供了一层抽象,底层可以切换不同的缓存实现,例如:
EHCache、Caffeine、Redis
使用时需要导入坐标:
Spring Cache
常用注解:
@EnaleCaching:开启缓存注解功能,通常加在启动类上
@Cacheable:在方法执行前先查询缓存中是否有数据,如果有数据,则直接返回缓存数据;如果没有缓存数据,调用方法并将方法返回值放到缓存中
@CachePut:将方法的返回值放到缓存中
@CacheEvict:将一条或多条数据从缓存中删除
只要在用户端查询套餐的接口上加上cacheable注解,当我们的redis中没有时我们会执行方法,然后将返回值插入到redis,插入的时result对象,当然我们取出的也是result,前端需要的也是result,当我们redis中有key时就直接返回:
@Cacheable(cacheNames = "setmeal",key = "#categoryId")
清理缓存:当套餐增加了,对应的分类就要清除缓存,不然查询不到我们增加的套餐,当套餐修改了,如果修改的是套餐种类,那么可能会影响两个套餐种类,所有要清楚所有缓存,如果套餐批量删除,也可能会影响多个分类,所以,也要清楚全部缓存:
@CacheEvict(cacheNames = "setmeal",key = "#setmealDTO.categoryId")
@CacheEvict(cacheNames = "setmeal",allEntries = true)