zoukankan      html  css  js  c++  java
  • Redis缓存实例2:缓存购物车数据——Hash类型

    思路:

     代码:

      @Autowired
        private RedisTemplate redisTemplate;
    
        @Override
        public void addCart(String skuId, Integer num, String username) {
    
            /**
             * 1)查询redis中的数据
             * 2)如果redis中已经有了,则追加数量,重新计算金额
             * 3)如果没有,将商品添加到缓存
             */
            //redisTemplate.boundHashOps新增元素到指定键中
            OrderItem orderItem = (OrderItem) redisTemplate.boundHashOps(CART + username).get(skuId);
            if (orderItem != null) {
                //存在,刷新购物车
                orderItem.setNum(orderItem.getNum() + num);
                //如果数量<=0,应该移除该商品
                if (orderItem.getNum()<= 0){
                    redisTemplate.boundHashOps(CART + username).delete(skuId);
                    return;
                }
                orderItem.setMoney(orderItem.getNum() * orderItem.getPayMoney());
                orderItem.setPayMoney(orderItem.getNum() * orderItem.getPayMoney());
            } else {
                //不存在,新增购物车
                Result<Sku> skuResult = skuFeign.findById(skuId);
                Sku sku = skuResult.getData();
                //getData()
                Spu spu = spuFeign.findSpuById(sku.getSpuId()).getData();
                //将SKU转换成OrderItem
                orderItem = this.sku2OrderItem(sku, spu, num);
            }
            //存入redis
            redisTemplate.boundHashOps(CART + username).put(skuId, orderItem);
        }
    

      

  • 相关阅读:
    今天,你ak了吗?①
    线段树模板
    DP(关于字符串,数字串的)
    Leedsdiscussion
    高数积分求旋转体体积
    tiny mission
    莫队+数组低级化的 优先队列
    LAB2
    Leedslecturepronouncation
    Eclipse Access Restriction
  • 原文地址:https://www.cnblogs.com/aaaazzzz/p/13160833.html
Copyright © 2011-2022 走看看