电商、外卖、直播等平台基本上都有购物车的功能。
购物车的作用:
1.需要购物的商品的保存
2.购物车可以充当收藏
购物车都需要设置商品的上限
购物车需要接口
1.查询登录用户的购物车列表数据
2.商品详情页、商品列表页 可以加入购物车
3.购物车列表页 可以实现商品数量的变化:增加、减少
实现思路
1.直接操作数据库
用的比较多 如果数据量大或者并发量大的 就会对系统很大压力
加减直接操作数据库
2.使用Redis+Mysql
1.直接对购物车表做缓存
Redis 做购物车的缓存,后面的操作都操作Redis ,最终借助MQ实现Redis数据和Mysql数据的同步
Hash: key:micro:cart:uid 字段:商品的skuid 值:购物车详情信息 有效期:30分钟
只要Redis发送变化发送MQ消息,实现Mysql数据的同步
2.只对购物车中的商品数据做缓存
Hash: key:micro:cart:uid 字段:商品的skuid 值:数量
数量变化 发送MQ消息
购物车商品新增 操作Mysql 可以直接操作Redis
查询购物车列表的时候:先查询数据库,再查询Redis,最后更新商品数量
代码实现
package com.lxm.productservice.service.impl;
import com.alibaba.fastjson.JSON;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Date;
import java.util.List;
import java.util.Map;
/**
* @Author LXM
* @Date 2020/7/16 0016
*/
@Service
public class OmsCarItemServiceImpl implements OmsCarItemService {
@Resource
private OmsCarItemDao dao;
@Resource
private RedissionCore redissionCore;
@Resource
private RabbitTemplate rabbitTemplate;
/**
* 向购物车表中添加数据
* @param token
* @param dto
* @return
*/
@Override
public