当前位置: 首页 > news >正文

JavaWeb(苍穹外卖)--学习笔记13(微信小程序开发,缓存菜品,Spring Cache)

前言

本篇文章是学习B站黑马程序员苍穹外卖的学习笔记📑。我的学习路线是Java基础语法-JavaWeb-做项目,管理端的功能学习完之后,就进入到了用户端微信小程序的开发,小程序菜品数据是通过数据库获得,如果用户端访问量过大,数据库的压力会增加。

🔍通过Redis(之前说过他的临时存储功能)来缓存菜品数据,减少数据库查询操作。内存操作的性能比磁盘IO性能更高。

🙌通过实现小程序缓存菜品整个功能来了解Redis缓存功能

先通过流程图来了解一下整个程序执行过程:

在这里插入图片描述
直接看代码(缓存菜品):

    /*** 根据分类id查询菜品** @param categoryId* @return*/@GetMapping("/list")@ApiOperation("根据分类id查询菜品")public Result<List<DishVO>> list(Long categoryId) {//构造redis中的key,规则:dish_分类idString key = "dish_" + categoryId;//查询redis中是否存在菜品数据List<DishVO> list = (List<DishVO>) 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);//查询起售中的菜品//不存在,根据分类id查询数据库,将查询到的菜品数据缓存到redis中list = dishService.listWithFlavor(dish);redisTemplate.opsForValue().set(key, list);return Result.success(list);}}

2.清除菜品缓存:

    /*** 新增菜品* @param dishDTO* @return*/@PostMapping@ApiOperation("新增菜品")public Result save(@RequestBody DishDTO dishDTO){log.info("新增菜品:{}", dishDTO);dishService.saveWithFlavor(dishDTO);//清理缓存数据String key = "dish_" + dishDTO.getCategoryId();redisTemplate.delete(key);return Result.success();}

🔍SpringCache实现缓存更方便的工具

1. 什么是SpringCache?
Spring Cache 提供了一套统一的注解和接口,使得开发者可以轻松地将缓存功能集成到应用中,而不需要关心底层缓存的具体实现(如 Redis、Ehcache 等)。

Spring Cache:提供了更高层次的抽象,通过注解(如 @Cacheable, @CachePut, @CacheEvict)简化了缓存的操作。

2. 来看看Spring Cache常用注解:

在这里插入图片描述
3. Spring Cache的配置使用

application.xml文件:

   redis:host: localhostport: 6379password: 123456database: 0

加入依赖:

<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>

然后就可以添加注解了:

在Controller层添加如下注解:
@Cacheable(cacheNames = “setmealCache”, key = “#categoryId”)

/*** 条件查询** @param categoryId* @return*/@GetMapping("/list")@ApiOperation("根据分类id查询套餐")@Cacheable(cacheNames = "setmealCache", key = "#categoryId")//缓存套餐数据key:setmealCache:categoryIdpublic Result<List<Setmeal>> list(Long categoryId) {Setmeal setmeal = new Setmeal();setmeal.setCategoryId(categoryId);setmeal.setStatus(StatusConstant.ENABLE);List<Setmeal> list = setmealService.list(setmeal);return Result.success(list);}

发出请求执行方法就可以看到缓存中有数据了

在这里插入图片描述

小白啊!!!写的不好轻喷啊🤯如果觉得写的不好,点个赞吧🤪(批评是我写作的动力)

…。。。。。。。。。。。…请添加图片描述

…。。。。。。。。。。。…

http://www.lryc.cn/news/601289.html

相关文章:

  • 中级全栈工程师笔试题
  • JavaScript数组去重性能优化:Set与Object哈希表为何效率最高
  • 影刀RPA_初级课程_玩转影刀自动化_网页操作自动化
  • 【多模态】天池AFAC赛道四-智能体赋能的金融多模态报告自动化生成part1-数据获取
  • vLLM 的“投机取巧”:Speculative Decoding 如何加速大语言模型推理
  • 重生之我在暑假学习微服务第二天《MybatisPlus-下篇》
  • 【前端】【vscode】【.vscode/settings.json】为单个项目配置自动格式化和开发环境
  • 人工智能——图像梯度处理、边缘检测、绘制图像轮廓、凸包特征检测
  • 设计模式(十三)结构型:代理模式详解
  • springboot基于Java与MySQL库的健身俱乐部管理系统设计与实现
  • 设计模式(十一)结构型:外观模式详解
  • Qt 窗口 工具栏QToolBar、状态栏StatusBar
  • IDEA安装Key Promoter X插件记录快捷键使用频率提高生产率
  • 【笔记】活度系数推导
  • 07.4-使用 use 关键字引入路径
  • 一、搭建springCloudAlibaba2021.1版本分布式微服务-父工程搭建
  • Kafka——消费者组消费进度监控都怎么实现?
  • SparkSQL — get_json_object函数详解(解析 json)
  • Vue 四个map的使用方法
  • Java面试实战:企业级性能优化与JVM调优全解析
  • mac neo4j install verifcation
  • 1.qt历史版本安装与多版本开发(解决被拦截问题)
  • 前缀和-560.和为k的子数组-力扣(LeetCode)
  • Qt C++ GUI 函数参数速查手册:基础与布局
  • HDFS基础命令
  • Python 列表推导式与生成器表达式
  • 3-基于FZ3B的Vitis AI DPU加速平台搭建
  • Vscode的常用快捷键(摆脱鼠标计划)
  • CodeBLEU:面向代码合成的多维度自动评估指标——原理、演进与开源实践
  • Jmeter的元件使用介绍:(七)后置处理器详解