如何解决高并发下的库存争抢问题?

Posted 抓手

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何解决高并发下的库存争抢问题?相关的知识,希望对你有一定的参考价值。

原子操作

单库修改,几乎无锁竞争,性能好,但性能有上限,可能数据库单点故障。

拆分key

可以将数据量比较大的key-value,拆分为多个key-value,分拆单次操作的压力,将操作压力平摊到多个redis实例中,降低对单个redis的IO影响。

令牌队列

类似于令牌限流,将对库存的竞争转换为对令牌的竞争,拿到令牌才可拿库存。

自旋互斥超时锁

可以对多线程进行互斥,实现同个类型的数据只有一个线程在运行。

CAS乐观锁

无锁竞争的原子操作,事务执行期间相关的缓存没有修改才会提交成功。

Redis+Lua

Redis+Lua可以实现对redis的原子操作,并且无锁竞争顺序执行。

更多:

Redis大key多key拆分实现方法解析_Redis_数据库 - 编程客栈

如何实现令牌队列(token queue) - freestyleking - 博客园

对比介绍:互斥锁 vs 自旋锁 - 知乎

CAS(乐观锁)的原理解析 - CryFace - 博客园

Redis+LUA技术_迷路人~的博客-CSDN博客_redis+lua

以上是关于如何解决高并发下的库存争抢问题?的主要内容,如果未能解决你的问题,请参考以下文章

redis实现高并发下的抢购/秒杀功能

简单实现redis实现高并发下的抢购/秒杀功能(转)

php结合redis实现高并发下的抢购秒杀功能

php结合redis实现高并发下的抢购秒杀功能

php 结合redis实现高并发下的抢购秒杀功能

php结合redis实现高并发下的抢购秒杀功能