电商购物车如何用 Redis¶
一、购物车需求¶
- 未登录:浏览器本地。
- 登录:服务端存储。
- 多端同步。
- 商品列表、数量、选中状态。
- 价格计算。
二、数据结构设计¶
每个用户一个 Hash:
为什么用 Hash¶
- 一个用户一个 key,方便管理。
- 每个商品一个 field,单独增删改。
- HGETALL 一次拿全部。
三、操作¶
加购¶
修改数量¶
删除¶
选中/取消¶
清空¶
四、为什么不用 List¶
- List 只能顺序存,不支持按 itemId 查。
- Hash 天然支持"一个用户多个商品"。
五、未登录购物车¶
存在浏览器 localStorage,登录后合并到 Redis:
六、价格计算¶
购物车里只存 skuId 和数量,价格实时查商品服务:
不在购物车里存价格,防止价格变了不一致。
七、过期策略¶
购物车数据要长期保留(用户可能放一周才买),不设 TTL。或者长期未活跃才清理。
八、优化¶
- 购物车列表加本地缓存。
- 批量查商品价格(MGET 或 pipeline)。
- 大购物车分页。
对比
- Hash:一个用户一个 key,字段是商品。
- String + JSON:也行,但改一个商品要重写整个 JSON。