秒杀实现(理论层,待实现,持续更新...)---Redis

秒杀怎么做?
秒杀也是电商项目很常见的功能,秒杀和传统的购物车模块并无关系,它需要单独建表,存储相关字段。秒杀一般有两种限制,库存限制,时间限制。
因为秒杀,是在有限的时间内用户进行抢购,那么对数据库的压力就可想而知了。通常来说,玩秒杀玩的就是缓存。

大致流程是这样,首先将所有秒杀商品id作为key,商品对象作为value存入redis缓存当中,用户访问秒杀页面时,第一次从数据库读取,以后就从redis缓存中读取,当用户点击秒杀商品详细页,就将通过该商品id从redis中获取商品明细;

当用户点击抢购后,因为秒杀都是一件商品,此时会将redis缓存中该商品的库存数减一,当该商品的库存为零时,同步到数据库,并删除redis中该秒杀商品。生成的秒杀订单也不会立即存入数据库,而是以当前登录用户名作为key,商品订单作为value存入redis缓存;

当用户付款成功后,再写入到数据库。一般设置如果用户5分钟未付款的话,将取消该秒杀订单,从redis中删除该订单,并将redis中该秒杀商品数回库存加1;
这样的话,在秒杀阶段,程序并不和数据库进行交互,而是和redis进行交互。可以极大的缓解数据库的压力。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值