redis的list做队列其实还是很爽的,简单,一个读一个写即可,而且基本每个系统都会使用redis,接入没有附加成本,也没有额外的学习成本。
如果需要订阅模型,写三个队列,然后三个消费者分别读自己的那个即可。
但是,也有一些问题:
- 无法回放,消费了即消失,没有记录。
- 消息体如果很大,会占用很多内存。
- 消费者如果很慢,或者异常了,或者流量突然增大,会导致redis内存占用突增,甚至直接OOM.
- 内存很贵。其他的消息队列往往用的磁盘,成本低很多。
- redis本身对流量密集的场景支持并没有那么友好。
所以,当我们的队列信息很多、或者消息体很大的情况下,建议用其他消息队列,而不是直接用redis。
当你停下来休息的时候,不要忘记别人还在奔跑!