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

原子操作

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

拆分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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值