购物车系统的设计

数据库 Redis
购物车里的数据存储在Redis中,数据存储具有快速、高效、读写速度非常快。购物车设计中,如果对可靠性要求不高,即使丢少量数据也是可以接受的情况下Redis存储购物车数据的方案能够有效提升购物车的性能和用户体验度。

 在电商平台中,购物车是一个非常核心的功能,用户浏览商品的过程中,他们可以将感兴趣的商品加入购物车方便后面挑选和下单。购物车功能的设计对于提升用户体验、增加公司商品销售量都有重要影响。

图片图片

   上图是一个典型的电商购物车的图,购物车协助用户选购商品时提供如下的功能:

(1)加入商品:用户可以将商品加入购物车,并选择商品的数量。

(2)删除商品:用户可以从购物车中删除不想要的商品。

(3)修改商品数量:支持用户修改购物车中商品的数量。

(4)查询购物车:用户可以查看购物车中的所有商品信息。

(6)商品结算:用户挑选自己需要的商品一起下单结算。

   商品添加到购物车分为用户登录购物车和未登录购物车(暂存购物车),如京东商城支持用户登录和不登录都可以添加商品到购物车;淘宝商城需要用户先登录然后才可以将商品加入购物车,下面我们聊聊购物车的实现。

1、暂存购物车的实现

   用户在未登录的情况,商品添加到购物车的数据一般都是暂存在客户端上,每个客户端保存用户自己唯一的一个购物车。客户端暂存购物车的数据常见的方案有Cookie、LocalStorage。

1.1、Cookie缓存购物车数据

   客户端与服务端的每次交互都会自动带着Cookie数据往返,这样服务端可读取客户端Cookie 中的购物车数据;Cookie存储购物车商品实现简单,在加减购物车、合并购物车过程中由于服务端读取操作Cookie中的数据,那么全部逻辑都可在服务端实现。如下是Cookie存储购物车数据的实现流程图:

图片图片

1.2、LocalStorage缓存购物车数据

   LocalStorage里的数据只能由客户端访问,然后客户端再传给服务器端实现数据的传递。使用 LocalStorage存储购物车数据,实现上相对复杂,客户端和服务端都要实现业务逻辑,但是LocalStorage的存储容量比Cookie(4KB)大得多,而且不用像Cookie那样,每次请求都要带上,可节省带宽。

   选择Cookie或LocalStorage 存储暂存购物车数据,需要根据自身业务场景来选择:

(1)如果是小型电商业务场景中,Cookie在存储与实现上起来都是比较好的选择。

(2)如电商规模较大,用户需加购商品较多的场景下,选择LocalStorage 更合适。

2、登录购物车的实现方案

   用户登录的购物车实现需要考虑数据存储方案,即就是购物车数据放缓存(如Redis)还是数据库(如Mysql),如下设计了一套将购物车数据存储Redis的加购物车方案:

图片图片

   如果支持商品暂存购物车,那么当用户登录之后需要将客户端中暂存的商品数据同步到服务端,客户端以Cookie暂存购物车数据为例的实现流程如下所示:

图片图片

   用户登录成功之后,客户端将购物车的数据传递到服务端,服务端从Cookie中解析购物车数据,然后保存到Redis上并清除Cookie中缓存的购物车数据,通过这样的合并就可以实现暂存购物车的数据同步。

3、服务端购物车数据的存储方案

   服务端购物车数据可以保存在Redis中也可以保存到Mysql,需要根据实际的业务场景做衡量:

(1)购物车数据存储在Mysql中,数据可靠性高于Redis,因为Redis有可能发生丢数据的情况;另一方面Mysql支持丰富的查询方式,使得购物车的数据做查询和统计的时候非常的方便。用户的购物车表设计如下所示:

图片图片

(2)购物车里的数据存储在Redis中,数据存储具有快速、高效、读写速度非常快。购物车设计中,如果对可靠性要求不高,即使丢少量数据也是可以接受的情况下Redis存储购物车数据的方案能够有效提升购物车的性能和用户体验度。

(3)有场景需要兼顾可靠性和性能的时候,我们可以采用Redis+Mysql并用的方式来存储购物车数据。

责任编辑:武晓燕 来源: 龙虾编程
相关推荐

2022-12-16 08:52:14

购物车系统存储

2015-08-03 11:48:12

购物车动画

2012-10-08 11:18:05

JavaMVC项目

2011-04-14 10:08:04

AJAXPHPJQuery

2022-09-13 16:01:13

购物车京东接口

2022-06-28 14:42:26

ETS购物车应用

2009-07-07 15:57:29

JSP购物车

2018-05-28 09:53:12

京东购物车Java

2013-12-11 11:26:24

移动互联网

2023-11-08 08:01:40

Spring购物车代码

2009-07-28 13:47:47

ASP.NET电子商务ASP.NET购物车

2017-11-06 09:10:56

程序员数据行业

2018-05-17 16:45:29

Java购物车京东

2021-02-01 09:57:29

鸿蒙HarmonyOS应用

2009-07-02 16:14:28

JSP Session购物车程序

2013-09-13 13:25:16

html5拖拽

2017-11-10 13:21:45

华为

2021-10-20 06:00:34

淘宝微信朋友圈购物车

2024-09-26 11:30:46

2009-06-10 11:36:45

有状态的SessionEclipse+JBo
点赞
收藏

51CTO技术栈公众号