我们当前实现的购物车是以Cookie的方式实现的,这样做的优点有以下两点:
- 实现简单
- 不需要占用服务端存储空间
缺点也很明显,主要有以下两点:
- 存储容量有限(Cookie中保存的数据量毕竟是比较有限的)
- 更换设备后,购物车信息不能同步
那么针对上面的缺点,我们应该怎样解决呢?这里给大家提供一下思路:
- 要求用户登录。
- 把购物车商品列表保存到数据库中。推荐使用Redis。
- 如果存到Redis的话,key最好用用户的ID,value便是购物车中商品列表。在Redis中存储有五种存储方式,我们比较适合使用hash方式,规定一个hash,然后key是商品ID,value是商品基本信息。这样做的好处是存储的内容不是很长,效率比较高。
- 在用户未登录的情况下写入cookie当中,当用户登录后,访问购物车列表时
- a) 把cookie中的数据同步到Redis
- b) 把cookie中的数据删除
- c) 展示购物车列表时以Redis为准
- d) 如果Redis中有数据cookie中也有数据,那么需要做数据合并,即相同商品数量相加,不同商品添加一个新商品
- 如果用户是登录状态,展示购物车列表时以Redis为准。如果未登录,以cookie为准。