苍穹外卖day07

一、缓存菜品

1. 问题说明

问题:用户端访问的菜品通过数据库获得,当访问量大时,会造成卡顿

解决思路:缓存到redis

逻辑:每个分类下的菜品缓存一份数据;数据有变更时清理缓存数据

2. 代码开发

(1)缓存菜品:

user.DishController:拿到分类id后判断redis中有无缓存,有直接拿出来返回,没有调用数据库,将数据存到redis中。

将List<DishVO>存成redis的string(序列化器可直接转)

(2)清理缓存:增删改的时候清理,改删(全清),增(清增的)

admin.DishController:根据key清理缓存,全清的时候先获取所有dish_开头的key,再清

二、缓存套餐

1. Spring Cache

是一个框架,实现了基于注解的缓存功能;提供了一层抽象,底层可以切换不同的缓存(EHCache,Caffeine,Redis)

2. Spring Cache入门:

启动类加@EnableCaching

controller层新增类 方法上加注解**@CachePut:**
标题

controller层查询类 方法上加注解**@Cachable:** (通过代理对象实现)

controller层删除类 方法上加注解**@CachaEvict:** (通过代理对象实现)

3. 代码开发

启动类加@EnableCaching

user.SetmealController:查询方法加@CachePut

admin.SetmealController:增删改加@CacheEvict(删改全清)

三、添加购物车

1. 需求分析和设计

POST请求:/user/shoppingCard/add

请求参数json:套餐id或菜品id,口味

返回数据:code

2. 代码开发

ShoppogCartController:@RequestBody

ShoppongCartServiceImpl:判断数据库中是否有该菜品(套餐)的数据,如果有,直接数量加一(拿出list的第0个对象的id);如果没有,添加进数据库(现根据菜品id/套餐id查找相关信息,再添加)

ShoppongCartMapper:根据用户id和菜品id(套餐id)查询,返回list;

根据购物车id将数量+1;

添加购物车

3. 功能测试

查看购物车功能还未开发,可通过小程序测试,数据库表验证

四、查看购物车

复用上方的根据id查询,只传递用户id进去

五、清空购物车

根据用户id删除购物车数据

相关推荐
Knight_AL26 分钟前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
利威尔xu41 分钟前
Go IM 源码实战(14):本地缓存快 3000 倍,失效却难 10 倍
后端·缓存·微服务·面试·golang
逃逸线LOF1 小时前
Ribbon负载均衡原理(Irule组件、源码分析)
后端·spring cloud·ribbon
砚底藏山河2 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
慢云智慧空间2 小时前
从设备智能到空间理解,空间智能终端解决方案商如何重新定义行业标准
后端
利威尔xu2 小时前
Go IM 源码实战(13):30 个会话只有 2 个红点,未读数错在三条路径
redis·后端·微服务·面试·golang
猿究院_夏燊2 小时前
MySQL 的四种隔离级别
java·数据库·mysql
薛定谔的猫-菜鸟程序员2 小时前
软件架构设计师开发资料大全(从入门到精通)
后端·python·系统架构·flask·架构设计师
码流子3 小时前
移动收费怎么做?手持终端+App+收费中心的架构实践
java·开发语言·架构
霸道流氓气质3 小时前
AI 流式对话与实时聊天平台:SSE 解码竞态、有状态会话隔离与背压取消的 Vue3 + Spring AI 生产级实战
java·人工智能·spring