扫码关注微信公众号

回复“面试手册”,获取本站PDF版

回复“简历”,获取高质量简历模板

回复“加群”,加入程序员交流群

回复“电子书”,获取程序员类电子书

当前位置: 计算机基础 > Redis高频面试题 > 40.如何通过Redis实现异步队列?

主要有两种方式

第一种是使用List作为队列,通过RPUSH生产消息, LPOP消费消息

存在的问题:如果队列是空的,客户端会不停的pop,陷入死循环

解决方法

  • 当lpop没有消息时,可以使用sleep机制先休眠一段时间,然后再检查有没有消息。
  • 可以使用blpop命令,在队列没有数据的时候,会立即进入休眠状态,一旦数据到来,则立刻醒过来。这种做法的缺点是只能提供一个消费者消费

第二种方法是pub/sub主题订阅模式,发送者(pub)发送消息,订阅者(sub)接收消息

存在的问题:消息的发布是无状态的,无法保证到达,如果订阅者在发送者发布消息时掉线,之后上线也无法接收发布者发送的消息

解决方法:使用消息队列


点击面试手册,获取本站面试手册PDF完整版