30. 商品詳情頁結構分析、緩存全量更新問題以及緩存維度化解決方案

整個緩存的技術方案,分成兩種類型將。

  1. 實時性比較高數據,比如說庫存,銷量之類的這種數據,我們採取的實時的緩存+數據庫雙寫的技術方案,雙寫一致性保障的方案

  2. 實時性要求不高數據,比如說商品的基本信息,等等,我們採取的是三級緩存架構的技術方案,就是說由一個專門的數據生產的服務,去獲取整個商品詳情頁需要的各種數據,經過處理後,將數據放入各級緩存中,每一級緩存都有自己的作用

商品詳情頁分析

實時性要求不高的數據,大型電商網站中的商品詳情頁的數據結構分析

  1. 商品的基本信息
標題:【限時直降】Apple/蘋果 iPhone 7 128G 全網通4G智能手機正品
短描述:限時優惠 原封國行 正品保障
顏色:
存儲容量
圖片列表
規格參數

其他信息:店鋪信息,分類信息,等等,非商品維度的信息
  1. 商品介紹:放緩存,看一點,ajax異步從緩存加載一點
  2. 實時信息:實時廣告推薦、實時價格、實時活動推送,等等,ajax加載

將商品的各種基本信息,分類放到緩存中,每次請求過來,動態從緩存中取數據,然後動態渲染到模板中

  1. 數據放緩存,性能高,動態渲染模板,靈活性好

大型緩存全量更新問題

在這裏插入圖片描述

  1. 網絡耗費的資源大
  2. 每次對redis都存取大數據,對redis的壓力也比較大
  3. redis的性能和吞吐量能夠支撐到多大,基本跟數據本身的大小有很大的關係
  4. 如果數據越大,那麼可能導致redis的吞吐量就會急劇下降

緩存維度化解決方案

  1. 維度:商品維度,商品分類維度,商品店鋪維度
  2. 不同的維度,可以看做是不同的角度去觀察一個東西,那麼每個商品詳情頁中,都包含了不同的維度數據
  3. 如果不維度化,就導致多個維度的數據混合在一個緩存value中
  4. 但是不同維度的數據,可能更新的頻率都大不一樣
  5. 比如說,現在只是將1000個商品的分類批量調整了一下,但是如果商品分類的數據和商品本身的數據混雜在一起
  6. 那麼可能導致需要將包括商品在內的大緩存value取出來,進行更新,再寫回去,耗費大量的資源,redis壓力也很大
  7. 但是如果我們隊對緩存進行維度化,那麼在不同的維度數據更新的時候,只要去更新對應的維度就可以了

維度化:將每個維度的數據都存一份,比如說商品維度的數據存一份,商品分類的數據存一份,商品店鋪的數據存一份

  1. 包括之前那種實時性較高的數據,也可以理解爲一個維度,那麼維度拆分後
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章