微信公众号:路人zhang
网站救助计划

1.为阅读体验,本站无任何广告,也无任何盈利方法,站长一直在用爱发电,现濒临倒闭,希望有能力的同学能帮忙分担服务器成本


2.捐助10元及以上同学,可添加站长微信lurenzhang888,备注捐助网站倒闭后可联系站长领取本站pdf内容


3.若网站能存活下来,后续将会持续更新内容

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

主要有两种方式

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

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

解决方法

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

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

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

解决方法:使用消息队列

本站链接:https://www.mianshi.online如需勘误或投稿,请联系微信:lurenzhang888


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