购物车
购物车数据存储形式
Cookie
无须登录、无须查库、保存在浏览器端
优点:性能好、访问快,没有和数据库交互
缺点:换电脑购物车数据会丢失。电脑被其他人登录,隐私
Session
用户登录后,购物车数据放入用户会话
优点:初期性能较好,访问快
缺点: session 基于内存,用户量庞大影响服务器性能。只能存在与当前会话,不适用集群与分布式系统
数据库
用户登录后,购物车数据存入数据库
优点:数据持久化,可在任何地点任何时间访问
缺点:频繁读写数据库,造成数据库压力
Redis
用户登录后,购物车数据存入 redis 缓存
优点:
- 数据持久化,可在任何地点任何时间访问
- 频繁读写只基于缓存,不会造成数据库压力
- 适用于集群与分布式系统,可扩展性强
版本差异(购物车设计 → 当前)
| 特性 | 传统方案 | 当前实践 |
|---|---|---|
| 未登录 | Cookie 存储 | 不变;或 localStorage + 服务端合并 |
| 已登录 | 数据库表 | 不变;Redis 缓存购物车对象提升性能 |
| 跨端同步 | 无 | 登录后合并 Cookie/本地购物车到服务端 |
| 一致性 | 直接写库 | 分布式事务成本高,最终一致 + 幂等扣库存 |
购物车数据模型(用户维度、商品维度、数量、选中状态)与合并策略不随版本变化;工程重点是缓存与最终一致性设计。