大型电商网站在购物节的时候都会有很高的并发量,购物车模块无疑是访问最多的,那么要如何设计才能扛住并发量呢
1、Session方式:
优点:初期性能好,访问快,保存在服务端,相对比较安全
缺点:对于大型电商网站来说会占用过多的服务器资源,造成服务器压力过大。而且用户在退出登录的时候数据会丢失,下次登录又要重新选择
2、Cookie方式
优点:性能好,访问快,保存在客户端,不会占用服务器资源
缺点:Cookie有大小限制,只能存储4KB的数据,而且因为是保存在客户端,所有不够安全,如果是个人电脑,那么Cookie能很好的保存用户购物车信息,如果是公共环境,那么Cookie会被其他用户覆盖掉,就会丢失数据。大型电商网站需要对用户的购买行为进行分析,然后给用户推荐感兴趣的商品,Cookie存储购物车的情况下,不能对用户的购买行为进行分析(数据会被覆盖)。
3、数据库方式
优点:持久化存储,可以分析用户的购买行为
缺点:在高并发的场景下,对数据库的读写压力特别大,网站速度变慢,维护成本增加
4、Redis方式
优点:持久化存储,基于缓存,性能高,读写速度快,不会对数据库造成压力,适用于集群和分布式系统,可扩展能力强
具体方案:
我们可以把未登录用户的购物车信息使用skuid:number
的方式保存在Cookie中,已登录用户的购物车信息使用Redis中hash类型userid:skuid:number
进行保存,用户登录的时候,可以先检查一下Cookie中有没有购物车信息,如果有,读取Cookie中的购物车信息,然后保存在Redis中。