首页 > 技术文章 > 秒杀系统

Piers 2019-03-11 23:24 原文

学习目标

  • 秒杀原理
  • 性能测试
  • 性能分析

系统目标

  • 性能优秀
  • 能经受住高并发
  • 不会超卖

框架

  • Spring
  • Redis
  • 线程池

思路

lpush N 个需要秒杀商品的序号
lpop 取序号,取不出来则秒杀失败
之后异步存入数据库

一些错误

过度设计

想设计一个秒杀操作可以有不同实现的父类,发现没有必要,我能想到就这一个方案。

秒杀工厂 UML
秒杀工厂 UML

用 Redis 事务控制秒杀数量

思路是这样,开始事务控制,先 get 数量,后 decrease 之,后提交。
这是错误的。事务只能控制插入是正确的,会读取到脏值。

推荐阅读