操屁眼的视频在线免费看,日本在线综合一区二区,久久在线观看免费视频,欧美日韩精品久久综

新聞資訊

    1.1. 購物車常見實現方式

    購物車是任何一個電商項目都會使用到的功能,面試的時候也經常問到,傳統的做法是使用關系型數據庫,比如mysql,建立一個cat購物車表,把相關的購物車產品信息都放到數據庫里面。

    CREATE TABLE goods_shopcar (id int(4) NOT NULL ,uid int(10) NULL ,goods_id int(10) NULL ,number int(10) NULL ,status tinyint(4) NULL ,create_time int(10) NULL ,update_time int(10) NULL ,PRIMARY KEY (id));

    這樣的設計在功能完全沒問題,但在實際使用中,由于購物車的數據量太大,而且修改頻繁,會導致數據庫的壓力增加,所以在正式項目開發中,一般不會直接使用關系型數據庫來存儲購物車信息。

    既然不用關系型數據庫購物車保存到數據庫,但就從非關系型數據庫里面做選擇了,很多的架構師會選擇使用存購物車的數據,這也完全可以,有非常豐富的查詢API,性能也比傳統關系型數據庫要好,使用確實是個不錯的選擇。

    但比起使用,有部分公司也會使用redis來存放購物車的信息,比起的性能,redis的性能要來得更好。

    在這就來談論下使用redis來完成購物車得思路。

    1.2. 開啟持久化

    購物車的數據購物車保存到數據庫,既然不存在關系型數據庫中,使用redis存儲也不能讓數據丟失,那redis必須開啟持久化,這樣哪怕redis重啟數據也不至于丟失。

    Redis有兩種持久化機制,一種叫rdb,一種叫aof。

    rdb也叫鏡像文件,存放的是某個時刻redis內存數據的一個鏡像

    aof就是 only file的簡寫,里面存放的是日志文件,準確的來說是存放RESP的指令日志,這里RESP指令并不是這次的重點,這里不做討論。

    首先,RDB默認是開啟的,在Redis配置文件里面,關于RDB的配置如下

    save 900 1:表示900 秒內如果至少有 1 個 key 的值變化,則保存 save 300 10:表示300 秒內如果至少有 10 個 key 的值變化,則保存save 60 10000:表示60 秒內如果至少有 10000 個 key 的值變化,則保存

    默認的配置最少是60秒并且有10000個key發生變化才會刷新一次鏡像,這樣如果在時間沒到60秒,這個時候redis意外宕機,在這個時間段的數據都會丟失

    你可能會想,是否可以增加一條配置

    save 1 1:表示1 秒內如果至少有 1 個 key 的值變化,則保存

    這樣數據視乎就不會丟失,但這肯定是不行的,每一秒都對redis內存的所有數據都寫入一次磁盤變成鏡像文件,這樣對性能影響非常大。

    為了防止數據丟失,光從rdb上下手還是不行,默認aof并沒開啟,應該開啟aof日志文件,這時候得修改配置文件,增加aof的相關配置

    appendonly yes

    開啟了aof日志,丟失數據的可能性就減少很多了。

    1.3. 業務分析

    以京東的購物車為例,按業務分析,需要完成如下功能:

    1.全選功能-獲取所有該用戶的所有購物車商品2.商品數量-購物車圖標上要顯示購物車里商品的總數3.刪除-要能移除購物車里某個商品4.增加或減少某個商品的數量

    1.4. 數據結構選擇

    Redis常用有5種數據類型分別為,hash,list,set,zset,在這個案例里面我們選擇使用hash來完成這個購物車功能

    先對hash這種數據類型的常用命令進行介紹

    redis中hash的添加命令hset,如果key不存在,創建key,存在,則覆蓋原有值

    redis 127.0.0.1:6379>hset myhash name enjoy ----給key為myset的鍵值設置鍵為name值為enjoy

    redis中hash的查看命令hget

    redis 127.0.0.1:6379>hget myhash name ----輸出: "enjoy

網站首頁   |    關于我們   |    公司新聞   |    產品方案   |    用戶案例   |    售后服務   |    合作伙伴   |    人才招聘   |   

友情鏈接: 餐飲加盟

地址:北京市海淀區    電話:010-     郵箱:@126.com

備案號:冀ICP備2024067069號-3 北京科技有限公司版權所有