# Redis 应用丨秒杀场景

# 零、业务分析

实际业务中,秒杀包含了许多场景,具体可以分为秒杀前、秒杀中和秒杀后三个阶段,从开发角度具体分析如下:

  1. 秒杀前:主要是做好缓存工作,以应对用户频繁的访问,因为数据是固定的,可以把商品详情页的元素静态化,然后用CDN或者是浏览器进行缓存。
  2. 秒杀中:主要是库存查验,库存扣减和订单处理,这一步的特点是
    • 短时间内大量用户同时进行抢购,系统的流量突然激增,服务器压力瞬间增大(瞬时并发访问高)
    • 请求数量大于商品库存,比如 10000 个用户抢购,但是库存只有 100
    • 限定用户只能在一定时间段内购买
    • 限制单个用户购买数量,避免刷单
    • 抢购是跟数据库打交道,核心功能是下单,库存不能扣成负数
    • 对数据库的操作读多写少,而且读操作相对简单
  3. 秒杀后:主要是一些用户查看已购订单、处理退款和处理物流等等操作,这时候用户请求量已经下降,操作也相对简单,服务器压力不大。

本文核心:秒杀中。

数据库: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

上次更新: 7/30/2021, 8:19:40 PM