用Redis实现异步队列:

用list作为队列
RPUSH作为生产者生产消息,LPOP 作为消费者消费消息

缺点:没有等待队列里有值就直接消费

弥补:可以通过在应用层引入sleep机制去调用LPOP重试;

 

如果不用sleep机制,可以使用BLPOP key[key..] timeout 阻塞直到队列有消息或者超时

缺点:一个生产者对应一个消费者

 

如何做到生产一次,能让多个消费者消费?

pub/sub:主题订阅模式

发送者(pub)发送消息,订阅者(sub)接受消息

订阅者可以订阅任意数量的频道

缺点:消息无状态,无法保证可达
如何通过Redis实现异步队列

相关文章: