什么是緩存?
緩存(Cache), 就是數據交換的緩沖區,俗稱的緩存就是緩沖區內的數據,一般從數據庫中獲取,存儲于本地代碼。
通過Redis來緩存數據,減少數據庫查詢操作;
邏輯
每個分類的菜品保存一份緩存數據
數據庫菜品數據有變更時清理緩存數據
如何將商品數據緩存起來。
@GetMapping("/list")@ApiOperation("根據分類id查詢菜品")public Result<List<DishVO>> list(Long categoryId) {//查詢redis里面是否存在數據類;String key="dish_"+categoryId;//如果存在直接返回List<DishVO> list = (List<DishVO>) redisTemplate.opsForValue().get(key);if (list!=null&&list.size()>0){return Result.success(list);}//不存在需要查詢數據庫,并保存至redis里面Dish dish = new Dish();dish.setCategoryId(categoryId); //設置套餐的iddish.setStatus(StatusConstant.ENABLE);//查詢起售中的菜品list = dishService.listWithFlavor(dish);redisTemplate.opsForValue().set(key,list); //將他緩存起來return Result.success(list);}
控制臺沒有sql了,說明緩存已經實現了。
二 數據內容發生改變的時候,需要修改redis的內容。
修改操作、刪除菜品、起售或者停售、新建菜品也需要緩存數據
private void cleanCache(String pattern){Set keys = redisTemplate.keys(pattern);redisTemplate.delete(keys); //支持刪除集合的}
刪除對應的緩存數據
緩存套餐功能
spring Cache 實現了基于注解的緩存功能
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-cache</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
對應的maven坐標
注解開發
Cacheable 在方法執行前查詢緩存是否有數據;