购物车模块

image-20210901145144963

购物车的设计

image-20210901132657038

image-20210901143425858

购物车为什么要redis来存储

也是为了防止对mysql的冲击 mysql存的是购物车的原始数据 ,redis存储的是原始数据的副本,缓存 数据 ,让前台 的访问直接从redis中去取结果 =

购物车存储功能

自己写

image-20210901163041488

一点头绪 没

image-20210901182414881

代码的实现

??添加的时候将购物车存储到db后,同步到缓存 中,这个逻辑是怎样的,怎么就将这个数据 存储到缓存 中呢

--:会调用一个flushcache方法,传入一个memberid,通过memberid将这个用户下面的所有购物车商品全都查询 出来 ,然后设置利用hash的数据结构 将这些商品集合存储到缓存 中 数据 结构 为: {String,{string,string}}的结构

{KEY,{key,value}}

企业中用到的存储模型:对象 : id : 属性

KEY:user:1:142 key:skuid value:商品的json数据

 @Override
    public void flushCartCache(String memberId) {

        OmsCartItem omsCartItem = new OmsCartItem();
        omsCartItem.setMemberId(memberId);
        List<OmsCartItem> omsCartItems = omsCartItemMapper.select(omsCartItem);


        //更新缓存
        Jedis jedis = redisUtil.getJedis();

        for (OmsCartItem cartItem : omsCartItems) {
            Map<String ,String> map = new HashMap();
            map.put(cartItem.getProductSkuId(), JSON.toJSONString(OmsCartItem.class));
            jedis.hmset("user"+ memberId + "cart", map);
        }
        jedis.close();
    }
}

购物车列表功能

image-20210902174235465

展现是用的一个内嵌页面

image-20210902194543366

合并cookie中的购物车到数据库中还没做

posted @ 2021-09-29 22:28  JargonFire  阅读(158)  评论(0)    收藏  举报