redis的list做队列其实还是很爽的,简单,一个读一个写即可,而且基本每个系统都会使用redis,接入没有附加成本,也没有额外的学习成本。

如果需要订阅模型,写三个队列,然后三个消费者分别读自己的那个即可。

但是,也有一些问题:

  1. 无法回放,消费了即消失,没有记录。
  2. 消息体如果很大,会占用很多内存。
  3. 消费者如果很慢,或者异常了,或者流量突然增大,会导致redis内存占用突增,甚至直接OOM.
  4. 内存很贵。其他的消息队列往往用的磁盘,成本低很多。
  5. redis本身对流量密集的场景支持并没有那么友好。

所以,当我们的队列信息很多、或者消息体很大的情况下,建议用其他消息队列,而不是直接用redis。