自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

購(gòu)物車系統(tǒng)的設(shè)計(jì)

數(shù)據(jù)庫(kù) Redis
購(gòu)物車?yán)锏臄?shù)據(jù)存儲(chǔ)在Redis中,數(shù)據(jù)存儲(chǔ)具有快速、高效、讀寫(xiě)速度非??臁Y?gòu)物車設(shè)計(jì)中,如果對(duì)可靠性要求不高,即使丟少量數(shù)據(jù)也是可以接受的情況下Redis存儲(chǔ)購(gòu)物車數(shù)據(jù)的方案能夠有效提升購(gòu)物車的性能和用戶體驗(yàn)度。

 在電商平臺(tái)中,購(gòu)物車是一個(gè)非常核心的功能,用戶瀏覽商品的過(guò)程中,他們可以將感興趣的商品加入購(gòu)物車方便后面挑選和下單。購(gòu)物車功能的設(shè)計(jì)對(duì)于提升用戶體驗(yàn)、增加公司商品銷售量都有重要影響。

圖片圖片

   上圖是一個(gè)典型的電商購(gòu)物車的圖,購(gòu)物車協(xié)助用戶選購(gòu)商品時(shí)提供如下的功能:

(1)加入商品:用戶可以將商品加入購(gòu)物車,并選擇商品的數(shù)量。

(2)刪除商品:用戶可以從購(gòu)物車中刪除不想要的商品。

(3)修改商品數(shù)量:支持用戶修改購(gòu)物車中商品的數(shù)量。

(4)查詢購(gòu)物車:用戶可以查看購(gòu)物車中的所有商品信息。

(6)商品結(jié)算:用戶挑選自己需要的商品一起下單結(jié)算。

   商品添加到購(gòu)物車分為用戶登錄購(gòu)物車和未登錄購(gòu)物車(暫存購(gòu)物車),如京東商城支持用戶登錄和不登錄都可以添加商品到購(gòu)物車;淘寶商城需要用戶先登錄然后才可以將商品加入購(gòu)物車,下面我們聊聊購(gòu)物車的實(shí)現(xiàn)。

1、暫存購(gòu)物車的實(shí)現(xiàn)

   用戶在未登錄的情況,商品添加到購(gòu)物車的數(shù)據(jù)一般都是暫存在客戶端上,每個(gè)客戶端保存用戶自己唯一的一個(gè)購(gòu)物車??蛻舳藭捍尜?gòu)物車的數(shù)據(jù)常見(jiàn)的方案有Cookie、LocalStorage。

1.1、Cookie緩存購(gòu)物車數(shù)據(jù)

   客戶端與服務(wù)端的每次交互都會(huì)自動(dòng)帶著Cookie數(shù)據(jù)往返,這樣服務(wù)端可讀取客戶端Cookie 中的購(gòu)物車數(shù)據(jù);Cookie存儲(chǔ)購(gòu)物車商品實(shí)現(xiàn)簡(jiǎn)單,在加減購(gòu)物車、合并購(gòu)物車過(guò)程中由于服務(wù)端讀取操作Cookie中的數(shù)據(jù),那么全部邏輯都可在服務(wù)端實(shí)現(xiàn)。如下是Cookie存儲(chǔ)購(gòu)物車數(shù)據(jù)的實(shí)現(xiàn)流程圖:

圖片圖片

1.2、LocalStorage緩存購(gòu)物車數(shù)據(jù)

   LocalStorage里的數(shù)據(jù)只能由客戶端訪問(wèn),然后客戶端再傳給服務(wù)器端實(shí)現(xiàn)數(shù)據(jù)的傳遞。使用 LocalStorage存儲(chǔ)購(gòu)物車數(shù)據(jù),實(shí)現(xiàn)上相對(duì)復(fù)雜,客戶端和服務(wù)端都要實(shí)現(xiàn)業(yè)務(wù)邏輯,但是LocalStorage的存儲(chǔ)容量比Cookie(4KB)大得多,而且不用像Cookie那樣,每次請(qǐng)求都要帶上,可節(jié)省帶寬。

   選擇Cookie或LocalStorage 存儲(chǔ)暫存購(gòu)物車數(shù)據(jù),需要根據(jù)自身業(yè)務(wù)場(chǎng)景來(lái)選擇:

(1)如果是小型電商業(yè)務(wù)場(chǎng)景中,Cookie在存儲(chǔ)與實(shí)現(xiàn)上起來(lái)都是比較好的選擇。

(2)如電商規(guī)模較大,用戶需加購(gòu)商品較多的場(chǎng)景下,選擇LocalStorage 更合適。

2、登錄購(gòu)物車的實(shí)現(xiàn)方案

   用戶登錄的購(gòu)物車實(shí)現(xiàn)需要考慮數(shù)據(jù)存儲(chǔ)方案,即就是購(gòu)物車數(shù)據(jù)放緩存(如Redis)還是數(shù)據(jù)庫(kù)(如Mysql),如下設(shè)計(jì)了一套將購(gòu)物車數(shù)據(jù)存儲(chǔ)Redis的加購(gòu)物車方案:

圖片圖片

   如果支持商品暫存購(gòu)物車,那么當(dāng)用戶登錄之后需要將客戶端中暫存的商品數(shù)據(jù)同步到服務(wù)端,客戶端以Cookie暫存購(gòu)物車數(shù)據(jù)為例的實(shí)現(xiàn)流程如下所示:

圖片圖片

   用戶登錄成功之后,客戶端將購(gòu)物車的數(shù)據(jù)傳遞到服務(wù)端,服務(wù)端從Cookie中解析購(gòu)物車數(shù)據(jù),然后保存到Redis上并清除Cookie中緩存的購(gòu)物車數(shù)據(jù),通過(guò)這樣的合并就可以實(shí)現(xiàn)暫存購(gòu)物車的數(shù)據(jù)同步。

3、服務(wù)端購(gòu)物車數(shù)據(jù)的存儲(chǔ)方案

   服務(wù)端購(gòu)物車數(shù)據(jù)可以保存在Redis中也可以保存到Mysql,需要根據(jù)實(shí)際的業(yè)務(wù)場(chǎng)景做衡量:

(1)購(gòu)物車數(shù)據(jù)存儲(chǔ)在Mysql中,數(shù)據(jù)可靠性高于Redis,因?yàn)镽edis有可能發(fā)生丟數(shù)據(jù)的情況;另一方面Mysql支持豐富的查詢方式,使得購(gòu)物車的數(shù)據(jù)做查詢和統(tǒng)計(jì)的時(shí)候非常的方便。用戶的購(gòu)物車表設(shè)計(jì)如下所示:

圖片圖片

(2)購(gòu)物車?yán)锏臄?shù)據(jù)存儲(chǔ)在Redis中,數(shù)據(jù)存儲(chǔ)具有快速、高效、讀寫(xiě)速度非???。購(gòu)物車設(shè)計(jì)中,如果對(duì)可靠性要求不高,即使丟少量數(shù)據(jù)也是可以接受的情況下Redis存儲(chǔ)購(gòu)物車數(shù)據(jù)的方案能夠有效提升購(gòu)物車的性能和用戶體驗(yàn)度。

(3)有場(chǎng)景需要兼顧可靠性和性能的時(shí)候,我們可以采用Redis+Mysql并用的方式來(lái)存儲(chǔ)購(gòu)物車數(shù)據(jù)。

責(zé)任編輯:武曉燕 來(lái)源: 龍蝦編程
相關(guān)推薦

2022-12-16 08:52:14

購(gòu)物車系統(tǒng)存儲(chǔ)

2015-08-03 11:48:12

購(gòu)物車動(dòng)畫(huà)

2012-10-08 11:18:05

JavaMVC項(xiàng)目

2011-04-14 10:08:04

AJAXPHPJQuery

2022-09-13 16:01:13

購(gòu)物車京東接口

2022-06-28 14:42:26

ETS購(gòu)物車應(yīng)用

2009-07-07 15:57:29

JSP購(gòu)物車

2025-03-10 09:07:20

2018-05-28 09:53:12

京東購(gòu)物車Java

2013-12-11 11:26:24

移動(dòng)互聯(lián)網(wǎng)

2025-03-13 09:22:39

2023-11-08 08:01:40

Spring購(gòu)物車代碼

2009-07-28 13:47:47

ASP.NET電子商務(wù)ASP.NET購(gòu)物車

2017-11-06 09:10:56

程序員數(shù)據(jù)行業(yè)

2018-05-17 16:45:29

Java購(gòu)物車京東

2021-02-01 09:57:29

鴻蒙HarmonyOS應(yīng)用

2025-03-17 07:47:29

Spring分布式緩存

2024-12-31 08:17:34

2009-07-02 16:14:28

JSP Session購(gòu)物車程序

2013-09-13 13:25:16

html5拖拽
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)