购物车模块redis和mysql_redis解决购物车的问题

还是谈谈购物车是如何实现的吧,购物车首先标识要唯一,因为每个账号要对应一个购物车,在登录状态下,我们可以直接将数据保存到数据库中,使用用户的id表示自己购买的商品,但是如果在未登录状态下呢,或者对购车访问量大的时候,这个就存在弊端,因为这样高速的读写数据库,会对数据库的压力比较大,在这里我们就看看如何用Redis和RabbitMQ解决这个问题。

第一章:登录状态下添加商品到购物车

此时购物车是对应一个用户,很简单,就是将商品的数据插入数据库中即可,但是如果读写频繁的时候,就存在压力问题,此时我们可以使用Redis担任读的部分功能。

在向[数据库]中插入数据的时候,使用RabbitMQ发送消息,然后有一个消息系统监听消息,将RabbitMQ中消息内容(保存到[Redis]中,但是此时Redis中我们该用什么存储结构,在Redis中存储结构有很多种,这里我们使用hash结构,看下面的图,分析一下hash结构:

从上面的图我们可以看的出来,这个图有两个键,一个是外部键,一个是内部键,这个就体现了购物车的好处,这里外部键可以标记一个唯一的购物车,内部键就可以标记购物车上的一个商品,一个外部键可以对应多个内部键,这个和一个购物车里有多个商品是相符合的,在用户查询自己的购物车数据的时候,就不要到数据库中查询,而是直接从redis中将数据拿出来即可,这样数据库的读压力就被Redis分担出去了。

就这样把登录状态下购物车问题解决了。

第二章:未登录下加入购物车࿰

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
购物车数据库设计方面,选择使用Redis作为存储数据库的主要原因是Redis具有高性能、支持多种数据类型以及对大规模数据量和频繁修改的处理能力。相比传统的关系型数据库如MySQLRedis能更好地应对购物车数据量大、修改频繁的情况,减轻数据库的压力。 在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、付费专栏及课程。

余额充值