0
点赞
收藏
分享

微信扫一扫

缓存数据减轻服务器压力

妖妖妈 2024-10-10 阅读 13

问题:不是所有的数据都需要请求后端的

在这里插入图片描述

解决方案:缓存

在这里插入图片描述

实现思路:每一个分类为一个key,一个可以下面可以有很多菜品

在这里插入图片描述

缓存代码

    /**
     * 根据分类id查询菜品
     *
     * @param categoryId
     * @return
     */
    @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(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;

    @Autowired
    public DishController(DishService dishService, RedisTemplate redisTemplate) {
   
        
举报

相关推荐

0 条评论