# Redis 应用丨秒杀场景
# 零、业务分析
实际业务中,秒杀包含了许多场景,具体可以分为秒杀前、秒杀中和秒杀后三个阶段,从开发角度具体分析如下:
- 秒杀前:主要是做好缓存工作,以应对用户频繁的访问,因为数据是固定的,可以把商品详情页的元素静态化,然后用
CDN
或者是浏览器进行缓存。 - 秒杀中:主要是库存查验,库存扣减和订单处理,这一步的特点是
- 短时间内大量用户同时进行抢购,系统的流量突然激增,服务器压力瞬间增大(瞬时并发访问高)
- 请求数量大于商品库存,比如 10000 个用户抢购,但是库存只有 100
- 限定用户只能在一定时间段内购买
- 限制单个用户购买数量,避免刷单
- 抢购是跟数据库打交道,核心功能是下单,库存不能扣成负数
- 对数据库的操作读多写少,而且读操作相对简单
- 秒杀后:主要是一些用户查看已购订单、处理退款和处理物流等等操作,这时候用户请求量已经下降,操作也相对简单,服务器压力不大。
本文核心:秒杀中。
数据库:Redis 6.2.5 + MySQL 8.0.22
服务器:Java 8、Golang 1.16、Node.js 14.17.1
压测工具:Jmeter
# 一、Java 版本
# 二、Golang 版本
# 三、Node.js 版本
参考:
https://segmentfault.com/a/1190000040235576