redis實現電商購物車


hash類型數據的基本操作

  • 添加/修改數據
hset key field value
  • 獲取數據
hget key field
hgetall key
  • 刪除數據
hdel key field1 [field2]

  • 添加/修改多個數據
hmset key field1 value1 field2 value2 ...
  • 獲取多個數據
hmget key filed1 field2 ...
  • 獲取哈希表中字段的數量
hlen key
  • 獲取哈希表中是否存在指定的字段
hexists key field

hash類型數據擴展操作

  • 獲取哈希表中所有的字段名或字段值
hkeys key
hvals key
  • 設置指定字段的數值數據增加指定范圍的值
hincrby key field increment
hincrbyfloat key field increment

注意事項

  • hash類型下的value只能存儲字符串,不允許存儲其他數據類型,不存在嵌套現象。如果數據未獲取到,對應的值未nil
  • 每個hash可以存儲2^32-1個鍵值對
  • hash類型十分貼近對象的數據存儲形式,並且可以靈活添加刪除對象屬性。但hash的設計初衷不是為存儲大量對象而設計的,切記不可濫用,更不可以將hash作為對象列表使用
  • hgetall操作可以獲取全部屬性,如果內部field過多,遍歷整體數據效率就會很低,有可能成為數據訪問瓶頸.

hash類型應用場景

1. 電商購物車

業務場景

電商網站購物車設計與實現
業務分析

  • 僅分析購物車的redis存儲模型

    ​ 添加、瀏覽、更改數量、刪除、情況

  • 購物車與數據庫間持久化同步(不討論)

  • 購物車與訂單間關系(不討論)

    ​ 提交購物車: 讀取數據生成訂單

    ​ 商家臨時價格調整: 隸屬於訂單級別

  • 未登錄用戶購物車信息存儲(不討論)

    ​ cookie存儲

解決方案

  • 以客戶id作為key,每位用戶創建一個hash存儲結構存儲對應的購物車信息
  • 將商品編號作為field,購買數量作為value進行存儲
  • 添加商品:追加全新的field和value
  • 瀏覽:遍歷hash
  • 更改數量: 自增/自減,設置value值
  • 刪除商品: 刪除field
  • 清空: 刪除key

當前僅僅是將數據存儲到redis中,並沒有起到加速的作用,商品信息還需要二次查詢數據庫

  • 每條購物車中的商品記錄保存成兩條field

  • filed1專用於保存購買數量

    ​ 命名格式: 商品id:nums

    ​ 保存數據: 數值

  • field2專用於保存購物車中顯示的信息,包含文字描述,圖片地址,所屬商家信息等

    ​ 命名格式: 商品id:info

    ​ 保存數據: json


hsetnx key field value


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM