概述
Redis设计用来做缓存的,但是由于它自身的某种特性使得它可以用来做消息队列。
它有几个阻塞式的API可以使用,正是这些阻塞式的API让其有能力做消息队列;
另外,做消息队列的其他特性例如FIFO(先入先出)也很容易实现,只需要一个list对象从头取数据,从尾部塞数据即可;
Redis能做消息队列还得益于其list对象blpop brpop接口以及Pub/Sub(发布/订阅)的某些接口,它们都是阻塞版的,所以可以用来做消息队列。(List : lpush / rpop)
方式一:生产者消费者模式
使用list结构作为队列,rpush生产消息,lpop消费消息,当lpop没有消息的时候,要适当sleep一会再重试。
或者,不用sleep,直接用blpop指令,在没有消息的时候,它会阻塞住直到消息到来。
方式二:发布订阅者模式
使用pub/sub主题订阅者模式,可以实现1:N的消息队列。
缺点:在消费者下线的情况下,生产的消息会丢失。此场景,建议用MQ。
最后
以上就是优秀小蝴蝶为你收集整理的使用Redis做过异步队列吗,是如何实现的?的全部内容,希望文章能够帮你解决使用Redis做过异步队列吗,是如何实现的?所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复