高并发环境下频繁更改购物车中的商品数量的实现思路及部分代码实现(只对购物车中的商品数量做缓存)——redis做缓存mq将redis中修改的数据同步到数据库

电商、外卖、直播等平台基本上都有购物车的功能。
购物车的作用:
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 
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值