购物车java后端怎么实现

购物车存储数据用什么mysql还是redis,这边场景是购物车要频繁编辑的场景,还是要二合一啊,求解读

未登录状态下的购物车:

  1. 使用cookies存储商品id
  2. 使用localstorage永久保存到浏览器
  3. 如果只想存储到关闭页面,使用sessionStorage

登录状态下的购物车:

  1. 使用session
  2. 使用临时缓存,例如redis、mangoDB
  3. 使用数据库,例如mysql

APP下的购物车:

  1. sqlite
  2. H2
  3. 自定义内存缓存
  4. 自定义文件缓存

根据你的描述,使用场景频繁的情况下,你需要使用到前后端配合减少后端压力,前端先提交到本地缓存,按照某个节点操作更新到后端存储

购物车的数据一般先存在redis中,当用户下单后将具体的数据入库。

频繁编辑操作触发增删改查实在消耗资源,而且这些都是中间数据,并不是真正要存储的数据,生成订单还要清空购物车,所以不建议使用mysql而是就是存放到redis里面,将购物车里的商品生成订单后,将订单存放到mysql里面比较合适
设计思路
就是用户点击加入购物车,先从redis里面取出购物车对象,将里面map集合取出,然后将商品信息在map集合比对,如果有同类商品,则只需要商品数量加一,价格从新计算一下,如果没有直接存到map集合里面,然后数量为1,最后将map集合再放进去即可

频繁操作建议redis

首先,搞清楚应用的基础架构,多少服务实例,每个实例接受多大的负载。
其次,要求对请求的响应周期是多少?
再次,你们的业务逻辑对表查询的依赖程度。
你们的实际并发是多大?如果是你一个人的测试操作,你把键盘戳破,都不会对数据库造成压力