2016 - 2024

感恩一路有你

redis 秒杀为什么不用incr 在大数据高并发环境下应该怎么保证库存或者下单同步?

浏览量:1570 时间:2021-03-11 04:49:43 作者:admin

在大数据高并发环境下应该怎么保证库存或者下单同步?

库存被加载到缓存中,例如redis、基于redis的原子操作、库存扣减和库存验证。

下单成功后,发送成功的订单MQ,库存系统消耗MQ扣减库存。当然,消费者需要确保幂等。

乐观锁用于库存系统的数据库操作。

有些“上古”程序员一直坚持反对使用redis怎么办?

分享大人物的答案似乎合情合理。

不要告诉我们是否使用redis。你必须告诉我们你为什么要使用redis。没有redis的业务怎么了?世界上没有免费的午餐。如果不直接使用头部缓存/NoSQL,可能会带来越来越严重的问题。

单个数据库的最大优点是易于实现事务,并由数据库本身保证。举个简单的例子,要下订单,需要扣除库存并插入订单条目。如果inventory和order都是数据库表条目,那么这个事务是无可挑剔的。如果库存在redis中,订单条目是mysql,通常需要先写redis,成功后再写数据库。如果您写数据库失败,需要回滚redis,如果由于网络或其他原因回滚失败,将再扣减一个存货。不要认为这些事情很容易解决。事务处理的复杂性远远超出您的想象。例如,当您编写mysql时,您在提交时就失去了连接。你无法判断提交是成功还是失败。你的redis是不是在倒退?

因此,当您引入一个新层时,您必须弄清楚您必须使用cache/NoSQL的目的以及您可以接受的一致性模型。否则,你就要出丑了。

redis为什么能实现秒杀?

Redis是一个单线程,可以很好的解决并发问题

如果我们用常用的代码逻辑来实现秒杀,就会出现并发问题,导致多人秒杀成功,货物超期交付。2使用redis可以对并发请求进行排队,就像通过redis成功减少库存后,人群中的人一个接一个地排队一样,我们可以减少网站数据库中的库存。当redis中没有库存请求时,我们将不会再次输入数据,秒杀也不会再次成功

redis 秒杀为什么不用incr 如何实现高并发秒杀问题 redis如何解决秒杀超卖

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。