秒杀怎么做?
秒杀也是电商项目很常见的功能,秒杀和传统的购物车模块并无关系,它需要单独建表,存储相关字段。秒杀一般有两种限制,库存限制,时间限制。
因为秒杀,是在有限的时间内用户进行抢购,那么对数据库的压力就可想而知了。通常来说,玩秒杀玩的就是缓存。
大致流程是这样,首先将所有秒杀商品id作为key,商品对象作为value存入redis缓存当中,用户访问秒杀页面时,第一次从数据库读取,以后就从redis缓存中读取,当用户点击秒杀商品详细页,就将通过该商品id从redis中获取商品明细;
当用户点击抢购后,因为秒杀都是一件商品,此时会将redis缓存中该商品的库存数减一,当该商品的库存为零时,同步到数据库,并删除redis中该秒杀商品。生成的秒杀订单也不会立即存入数据库,而是以当前登录用户名作为key,商品订单作为value存入redis缓存;
当用户付款成功后,再写入到数据库。一般设置如果用户5分钟未付款的话,将取消该秒杀订单,从redis中删除该订单,并将redis中该秒杀商品数回库存加1;
这样的话,在秒杀阶段,程序并不和数据库进行交互,而是和redis进行交互。可以极大的缓解数据库的压力。