3.如何实现购物车

购物车一般分为俩种状态:已登陆状态和未登陆状态!

1.当处于未登陆状态时,加入购物车的时候,我们一般会从Cookie中取出一个value(通常是一个uuid),加上一个前缀比如 REDIS_CART,作为key,把购物车相关的数据作为value存储到redis中!但是这样存在一个问题,就是我在购物车中加入商品数量的时候,我每次都要根据key把相关的value取出来,遍历购物车数据,增加数量再存回去,这样就提高了时间复杂度!所以我们在存储的时候使用hash这样的数据结构,key不变,下面在加一层key为itemId,类似下面图中那样,这样再查询的时候就提高了复杂度!

redis-hash

2.在处于登陆状态下的时候,就是正常走流程!但是有一种情况就是用户之前没有登陆的时候加了购物车,当他下单的时候,我们要跳转到登陆的页面进行登陆,当用户登陆成功之后,我们要把之前的购物车数据(未登陆状态)合并到已登陆的购物车!由于登陆系统是单独拆出来的,所以我们在登陆成功之后,要使用消息队列发送一个消息到购物车系统,让其进行合并!消息内容一个是 userId,另外一个是 cookie 中的 uuid,合并之后要把redis中的数据进行删除!

你可能感兴趣的:(3.如何实现购物车)