redis实现购物车功能

大厂技术,基于的Redis 购物车设计

1、添加商品到购物车

//添加商品(给用户01添加两个商品,默认数量为1)
redisTemplate.boundHashOps("01").put("1001", "1");
redisTemplate.boundHashOps("01").put("1002", "1");

2、查询购物车所有商品

redis中的1001商品信息
redisTemplate.boundHashOps("1001").put("product_sub_title", "商品副标题(卖点)");
redisTemplate.boundHashOps("1001").put("price", "商品价格");
redisTemplate.boundHashOps("1001").put("goodName", "商品名");
//查询01用户的购物车所有商品
List goodList = new ArrayList<Good>();
Map carlist = redisTemplate.boundHashOps("01").entries();
carlist.forEach((k,v)->{
    Good good = new Good();
    good.setGoodId(k.toString());
    Map good1 = redisTemplate.boundHashOps(k).entries();
    good1.forEach((k1,v1)->{
        if("product_sub_title".equals(k1.toString())){
            good.setProductSubTitle(v1.toString());
        }
        if("price".equals(k1.toString())){
            good.setPrice(v1.toString());
        }
        if("goodName".equals(k1.toString())){
            good.setGoodName(v1.toString());
        }
    });
    goodList.add(good);
});

return goodList;

此处可以优化,批量查询01用户下的所有商品信息,性能更好

2.0 返回01用户所有商品 

[{"goodId":"1001","productSubTitle":"商品副标题(卖点)","price":"商品价格","goodName":"商品名"},{"goodId":"1002","productSubTitle":null,"price":null,"goodName":null}]

2.1商品实体

public class Good {
    private String goodId;
    private String productSubTitle;
    private String price;
    private String goodName;

    public String getGoodId() {
        return goodId;
    }

    public void setGoodId(String goodId) {
        this.goodId = goodId;
    }

    public String getProductSubTitle() {
        return productSubTitle;
    }

    public void setProductSubTitle(String productSubTitle) {
        this.productSubTitle = productSubTitle;
    }

    public String getPrice() {
        return price;
    }

    public void setPrice(String price) {
        this.price = price;
    }

    public String getGoodName() {
        return goodName;
    }

    public void setGoodName(String goodName) {
        this.goodName = goodName;
    }
}

 3、修改商品数量

//修改商品1002数量为8
redisTemplate.boundHashOps("01").put("1002", "8");

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
购物车数据库设计方面,选择使用Redis作为存储数据库的主要原因是Redis具有高性能、支持多种数据类型以及对大规模数据量和频繁修改的处理能力。相比传统的关系型数据库如MySQL,Redis能更好地应对购物车数据量大、修改频繁的情况,减轻数据库的压力。 在Redis中,可以使用哈希表数据类型来存储购物车信息。每个购物车可以用一个哈希表来表示,哈希表的键可以是用户ID,值则是购物车中的商品ID和数量。这样可以方便地更新购物车中商品的数量、添加新的商品,同时也可以快速获取购物车中的商品列表。此外,使用有序集合数据类型,可以将购物车中的商品按照添加的时间进行排序,以便显示最新添加的商品。 除了购物车信息,还可以考虑使用Redis的其他数据类型来存储一些相关的信息。例如,可以使用字符串类型存储用户的购物车总价或折扣信息,使用列表类型存储用户的浏览记录,使用集合类型存储用户收藏的商品等。这样可以在购物车数据库中集中存储与用户购物相关的信息,方便操作和管理。 总结而言,Redis购物车数据库的设计可以使用哈希表存储购物车信息,其他数据类型存储相关信息。这样的设计能够提供高性能、灵活的存储和操作方式,以满足购物车数据量大、修改频繁的需求。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Redis购物车的架构实现](https://blog.csdn.net/suifeng629/article/details/102910277)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [购物车功能设计(二)(使用redis实现购物车功能)](https://blog.csdn.net/qq_43900677/article/details/108969435)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值