redis解决:消息队列-高并发-超抢/卖

我们在使用redis做秒杀程序的时候,解决超卖问题,是重中之重。
首先我们来了解一下redis
1、消息队列
什么是消息队列?
是一个消息的链表,是一个异步处理的数据处理引擎。
用途有哪些?
邮件发送、手机短信发送,数据表单提交、图片生成、视频转换、日志储存等。
有什么好处?
不仅能够提高系统的负荷,还能够改善因网络阻塞导致的数据缺失。
有哪些软件?
ZeroMQ、Posix、SquirrelMQ、Redis、QDBM、Tokyo Tyrant、HTTPSQS等(linux平台下)。
怎么实现?
顾名思义,先入队,后出队;先把数据丢到消息队列(入队),后根据相应的key来获取数据(出队)。
首先,redis设计用来做缓存的,但是由于它自身的某种特性使得它可以用来做消息队列,它有几个阻塞式的API可以使用,正是这些阻塞式的API让其有能力做消息队列;另外,做消息队列的其他特性例如FIFO(先入先出)也很容易实现,只需要一个list对象从头取数据,从尾部塞数据即可;redis能做消息队列还得益于其list对象blpop brpop接口以及Pub/Sub(发布/订阅)的某些接口,它们都是阻塞版的,所以可以用来做消息队列。
简单的代码实例:
在这里插入图片描述
怎么解决秒杀超卖问题,下面是一个思路:
在这里插入图片描述
用上述思路去做的话,我们再用户点击秒杀的时候,只需要检测,kucun_count中是否能pop出数据,如果能pop出来则证明还有库存,且秒杀成功。而且pop是原子性的,即使很高的并发,

同时有很多用户访问,也是排队一个一个解决(并行转串行)。

这样的话,就解决了超卖的问题。

这是一个思路,具体的秒杀程序应该还有很多细节需要完善,但是核心问题已经解决了哈。

希望能够帮到需要的朋友。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值