记录一次简单的秒杀场景

简介: 记录一次简单的秒杀场景

背景 商品秒杀

  • 条件: 限定用户在活动期间只能参加一次, 不能超卖
  • 环境: springBoot

处理方法

service方法上加了事务和锁

加锁是因为,并发下多个线程同时进行操作有可能导致超卖

service

public void doKill(){
    if(! condition) {
      return;
    }
    try{
      Lock.lock(); // 这个锁可能是个全局的锁
      if(! condition) {
        return;
      }
      doSomeThing(); // thows BusinessException
    }finally {
      Lock.unock();
    }
}
@Transectional
public void doSomeThing(){
}

注意:

假如在事务的service调用另外一个事务方法, 那么事务是不会生效的

可以在serviceImpl 里面再注入自己

注意假如doKill方法上加事务,可能会出现问题, 因为锁释放了事务还没提交

所以一定要保证事务结束后才释放锁

目录
相关文章
|
3月前
|
消息中间件 存储 NoSQL
面试题解析:如何解决分布式秒杀系统中的库存超卖问题?
面试题解析:如何解决分布式秒杀系统中的库存超卖问题?
116 0
|
6月前
|
SQL 缓存 NoSQL
商品秒杀情况下使用商品id做Redis缓存
商品秒杀情况下使用商品id做Redis缓存
35 0
|
8月前
|
数据库
.商品秒杀-超卖
.商品秒杀-超卖问题
53 0
|
11月前
|
消息中间件 缓存 NoSQL
redis缓存一致性问题 & 秒杀场景下的实战分析
本篇文章讲述了在高并发场景下 redis缓存一致性问题 & 秒杀场景下的实战分析, 数据库缓存不一致解决方案, 缓存与数据库双写一致以及秒杀场景下缓存一致性问题的实战解决方案
425 0
|
12月前
|
Java 测试技术 数据库
实现高并发秒杀的七种方式(2)
实现高并发秒杀的七种方式(2)
|
消息中间件 RocketMQ 开发者
下单问题分析及解决方式|学习笔记
快速学习下单问题分析及解决方式
113 0
下单问题分析及解决方式|学习笔记
|
存储 缓存 NoSQL
京东一面:Redis 如何实现库存扣减操作?如何防止商品被超卖?
京东一面:Redis 如何实现库存扣减操作?如何防止商品被超卖?
386 0
京东一面:Redis 如何实现库存扣减操作?如何防止商品被超卖?
|
缓存 监控 NoSQL
秒杀系统
秒杀能够以极小的经费撬动巨大的流量,虽然会带来一定的口碑损失,但因为极具性价比,所以经常被运营同学使用。本文介绍如何设计一款能够支撑60W QPS的秒杀系统,希望能够帮助到大家。
|
缓存 NoSQL JavaScript
简历上写的电商,那请问Redis 如何实现库存扣减操作和防止被超卖?
在日常开发中有很多地方都有类似扣减库存的操作,比如电商系统中的商品库存,抽奖系统中的奖品库存等。
简历上写的电商,那请问Redis 如何实现库存扣减操作和防止被超卖?
|
存储 缓存 NoSQL
Redis 如何实现库存扣减操作?如何防止商品被超卖?
基于数据库单库存 基于数据库多库存 基于redis 基于redis实现扣减库存的具体实现 初始化库存回调函数(IStockCallback) 扣减库存服务(StockService)。
836 0
Redis 如何实现库存扣减操作?如何防止商品被超卖?