莱芜市城乡建设局网站首页,湖南畅想网站建设,如何用源代码建设网站,影视公司起名问题:不是所有的数据都需要请求后端的 不是所有的数据都需要请求后端的,有些数据是重复的、可以复用的解决方案:缓存 实现思路:每一个分类为一个key,一个可以下面可以有很多菜品 前端是按照分类查询的,所以我们需要通过分类来缓存缓存代码 /*** 根据分类id查询菜品** @pa…问题:不是所有的数据都需要请求后端的 不是所有的数据都需要请求后端的,有些数据是重复的、可以复用的 解决方案:缓存 实现思路:每一个分类为一个key,一个可以下面可以有很多菜品 前端是按照分类查询的,所以我们需要通过分类来缓存 缓存代码 /*** 根据分类id查询菜品** @param categoryId* @return*/@GetMapping("/list")@ApiOperation("根据分类id查询菜品")public ResultListDishVO list(Long categoryId) {// 查询redis缓存String key = "dish_" + categoryId;// 如果缓存中有数据,直接返回ListDishVO list= (ListDishVO) redisTemplate.opsForValue().get(key);if(ObjectUtil.isNotEmpty(list)){return Result.success(list);}// 如果缓存中没有数据,查询数据库,然后将数据存入缓存Dish dish = new Dish();dish.setCategoryId(categoryId);dish.setStatus(StatusConstant.ENABLE);//查询起售中的菜品list = dishService.listWithFlavor(dish);redisTemplate.opsForValue().set(key, list);return Result.success(list);}清除缓存 当数据发生变化的时候,需要将历史缓存清除掉,防止不一致 package com.sky.controller.admin;import java.util.List;
import java.util.Set;@RestController
@RequestMapping("/admin/dish")
@Api(tags = "菜品相关接口")
@Slf4j
public class DishController {private DishService dishService;private RedisTemplate redisTemplate;@Autowiredpublic DishController(DishService dishService, RedisTemplate redisTemplate) {