您的位置:首页 > 汽车 > 时评 > 小程序制作视频教程_马鞍山网站建设制作公司_广告主平台_足球进球排行榜

小程序制作视频教程_马鞍山网站建设制作公司_广告主平台_足球进球排行榜

2024/10/31 11:21:34 来源:https://blog.csdn.net/Aishangyuwen/article/details/143246229  浏览:    关键词:小程序制作视频教程_马鞍山网站建设制作公司_广告主平台_足球进球排行榜
小程序制作视频教程_马鞍山网站建设制作公司_广告主平台_足球进球排行榜

        CategoryController,用户端查询分类id及其分类下对应的菜品,假如是第一次查询,那么就从数据库中查询并加入redis缓存中,若不是第一次查询,那么直接从redis中查询,不再查询数据库。

// redis缓存菜品,减少数据库的查询
// 在数据库中查找属于IO,假如有很多用户同时访问,那么查找效率将会变低,所以说要将菜品数据缓存在redis中,这样才方便调用
// 构造redis的逻辑:key就是分类的id,value是当前id下对应的菜品
@RestController("userDishController")
@RequestMapping("/user/dish")
@Slf4j
@Api(tags = "客户端-菜品浏览接口")
public class DIshController {@Autowiredprivate DishService dishService;// 自动注入redis操作工具@Autowiredprivate RedisTemplate redisTemplate;/*** 根据菜品分类id查询对于的菜品及其口味** @param categoryId* @return*/@GetMapping("/list")@ApiOperation("根据菜品分类查询对应菜品")public Result<List<DishVO>> list(Long categoryId) {// 构造redis中使用的key,规则:dish_分类id代表不同的菜品分类String key = "dish_" + categoryId;// 查询redis中是否查找当前key对应的菜品数据,将菜品数据封装为list集合返回List<DishVO> valueList = (List<DishVO>) redisTemplate.opsForValue().get(key);if (valueList != null && !valueList.isEmpty()) {// 若存在这个值,那么直接返回,无需查询数据库return Result.success(valueList);}// 若redis中不存在,那么查询数据库,并将其缓存在redis中Dish dish = new Dish();dish.setCategoryId(categoryId);// 查询在售状态中的菜品dish.setStatus(StatusConstant.ENABLE);List<DishVO> list = dishService.listWithFlavor(dish);// 将其缓存在redis中redisTemplate.opsForValue().set(key, list);return Result.success(list);}// 为了保持数据库中的数据和redis中缓存的数据保持一致,修改管理端的DishController的相关方法,每当数据发生变化,在管理端就要清除其缓存}

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com