项目一缓存商品
创始人
2024-11-17 18:05:26
0

文章目录

    • 概要
    • 整体架构流程
    • 技术细节
    • 小结

概要

因为商品是经常被浏览的,所以数据库的访问量就问大大增加,造成负载过大影响性能,所以我们需要把商品缓存到redis当中,因为redis是存在内存中的,所以效率会比MySQL的快.

整体架构流程

 

技术细节

  • 我们在缓存时需要保持数据的一致性
  • 所以当管理端用户进行增删改操作的时候需要清理缓存,否则用户看到的商品则是缓存中的(未被修改的商品)

小结

@GetMapping("/list")     @ApiOperation("根据分类id查询菜品")     public Result> list(Long categoryId) {         //缓存菜品         String key = "dish_" + categoryId;         List list = (List) redisTemplate.opsForValue().get(key);         if (list != null && list.size() > 0) {             return Result.success(list);         }         Dish dish = new Dish();         dish.setCategoryId(categoryId);         dish.setStatus(StatusConstant.ENABLE);//查询起售中的菜品          list = dishService.listWithFlavor(dish);         //如果不存在则查数据库存入redis         redisTemplate.opsForValue().set(key,list);         return Result.success(list);     }

package com.sky.controller.admin;  import com.sky.dto.DishDTO; import com.sky.dto.DishPageQueryDTO; import com.sky.entity.Dish; import com.sky.result.PageResult; import com.sky.result.Result; import com.sky.service.DishService; import com.sky.vo.DishVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.apache.ibatis.annotations.Delete; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.web.bind.annotation.*;  import javax.websocket.server.PathParam; import java.util.List; import java.util.Set;  @RestController @RequestMapping("admin/dish") @Slf4j @Api(tags = "菜品相关接口") public class DishController {      @Autowired     private DishService dishService;     @Autowired     private RedisTemplate redisTemplate;      /**      * 新增菜品      * @param dishDTO      * @return      */     @PostMapping     @ApiOperation("新增菜品")     public Result save(@RequestBody DishDTO dishDTO){         Long categoryId = dishDTO.getCategoryId();         String key = "dish_" + categoryId;         deleteCache(key);         dishService.saveWithFlavor(dishDTO);         return Result.success();     }      /**      * 菜品分页查询      * @param dishPageQueryDTO      * @return      */     @GetMapping("/page")     @ApiOperation("菜品分页查询")     public Result page(DishPageQueryDTO dishPageQueryDTO){         log.info("菜品分页查询:{}", dishPageQueryDTO);         PageResult pageResult = dishService.pageQuery(dishPageQueryDTO);         return Result.success(pageResult);     }       /**      * 批量删除菜品      * @param ids      * @return      */     @DeleteMapping     @ApiOperation("批量删除菜品")     public Result delete(@RequestParam List ids){         log.info("批量删除菜品:{}", ids);         deleteCache("dish_*");         dishService.deleteBatch(ids);         return Result.success();     }      /**      * 根据id查询菜品      * @param id      * @return      */     @GetMapping("/{id}")     @ApiOperation("根据id查询菜品")     public Result getById(@PathVariable Long id){         log.info("根据id查询菜品");         DishVO dishVO = dishService.getByIdWithFlavor(id);         return Result.success(dishVO);     }      /**      * 修改菜品      * @param dishDTO      * @return      */     @PutMapping     @ApiOperation("修改菜品")     public Result update(@RequestBody DishDTO dishDTO){         log.info("修改菜品:{}",dishDTO);         deleteCache("dish_*");         dishService.updateWithFlavor(dishDTO);         return Result.success();     }      @GetMapping("/list")     public Result> list(@RequestParam Long categoryId){         log.info("根据分类id查询菜品:{}",categoryId);         List list = dishService.list(categoryId);         return Result.success(list);     }      @PostMapping("/status/{status}")     @ApiOperation("菜品起售停售")     public Result startOrStop(@PathVariable Integer status, Long id){         deleteCache("dish_*");         dishService.startOrStop(status,id);         return Result.success();     }      private void deleteCache(String pattern){         Set keys = redisTemplate.keys(pattern);         redisTemplate.delete(keys);     } } 

相关内容

热门资讯

秒懂教程!拼三张房卡从哪买的,... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享...
秒懂教程!正版玩牛牛购买房卡,... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享受...
秒懂教程!微信创建炸金花好友房... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享...
秒懂教程!拼三张好友房卡在哪里... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享...
秒懂教程!微信牛牛房间怎么弄,... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享受...
秒懂教程!拼三张房卡如何购买,... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享...
秒懂教程!炸金花好友房卡在哪里... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享...
安卓开发关闭系统进程,掌握关闭... 你有没有想过,你的安卓手机里那些默默无闻的系统进程,其实也在悄悄地影响着你的手机性能呢?今天,就让我...
秒懂教程!微信炸金花购买房卡方... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享...
秒懂教程!微信里面拼三张链接房... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享...
平板电脑恢复安卓系统,一步到位... 亲爱的读者们,你是否曾经遇到过平板电脑卡顿、运行缓慢的问题?别急,今天就来给你支个招——平板电脑恢复...
秒懂教程!微信群炸金花房间怎么... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享...
秒懂教程!微信斗牛怎么买房卡,... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享受...
秒懂教程!如何创建炸金花房间,... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享...
秒懂教程!微信牛牛房卡如何购买... 牛牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享受...
秒懂教程!微信群链接炸金花房卡... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享...
秒懂教程!微信炸金花房卡如何购... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享...
秒懂教程!微信里面斗牛链接房卡... 斗牛是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:66336574许多玩家在游戏中会购买房卡来享受...
秒懂教程!微信创建拼三张好友房... 拼三张是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:56001354许多玩家在游戏中会购买房卡来享...
秒懂教程!微信玩链接炸金花房卡... 炸金花是一款非常受欢迎的棋牌游戏,咨询房/卡添加微信:71319951许多玩家在游戏中会购买房卡来享...