秒杀活动
秒杀活动 - 防止库存超卖
场景描述
实现方案
一、基于数据库实现
- 设计思想:基于CAS乐观锁
- 核心实现:
update t_good_stock
set good_num = good_num - #{buyNum}
where sku = #{sku} and good_num - #{buyNum} > 0 ;
- 实现描述:
- CAS compare and swap 直到where的两个查询条件均满足的时候才会扣减库存
- 扣减库存失败,接口层返回false,提示用户本次秒杀不成功,等待下一个时段
- 其他信息:
- 不适用悲观锁的方式,获取锁,释放锁,资源的竞争方式,性能低
- 方案缺点
二、基于Redis 实现
// 1.pom.xml 引用 Redis 依赖
// 2.实现类中注入 JedisPool
@Autowired
private JedisPool jedisPool ;
// 3.方法中获取 Jedis 对象
Jedis jedis = jedisPool.getResource();
// 4.库存扣减
jedis.decrBy(stockNum,buyNum);
// 扣减成功返回 >= 0L,否则扣减失败
其它保障
相关阅读
离暑假招生越来越近了,都说6月是招生淡季,尽管这样机构也不能松懈,招生始终是一场持久战,只有短期的胜利,但是没有长久的解放。所以抓
920备货节终于来了,还有不知道的小伙伴吗?今年920大促的主题是“全球双十一备货节”,大家可别小瞧了920备货节哦,它的销售情况可以影
临近春节,年味越来越浓,每个人都满心热切地期待阖家团聚,在这一年一度的新春佳节里,除了买年货、贴春联外,怎能少得了老少皆宜、全民狂
在上一篇文章《玩遍微信群不同阶段的拉新与留存》中对活动拉新稍做分析,很多详细的点并没有深入探讨,然而拉新又是产品能不能在短期
大家对于淘宝客推广都不陌生吧,大部分的卖家都会去开通此计划,然后通过这种方式来推广店铺的商品。很多的商家觉得很纳闷,为什么淘宝