经常听到很多人讨论:把 Redis 当作消息队列来用,是否合适?
有人表示赞成,他们认为 Redis 很轻量,用作队列很方便。
也有人反对,认为 Redis 会「丢」数据,最好还是用「专业」的消息中间件更稳妥。
究竟哪种方案更好呢?
这篇文章,我就和你聊一聊把 Redis 当作队列,究竟是否合适这个问题。
我会从简单到复杂,一步步带你梳理其中的细节,把这个问题真正讲清楚。
在文章的最后,我还会告诉你关于「技术选型」的思路,文章有点长,希望你可以耐心读完。
01 从最简单的开始:List 队列
如果你的业务需求足够简单,想把 Redis 当作队列来使用,最先想到的肯定是 List 这个数据类型。
因为 List 底层的实现就是一个「链表」,在头部和尾部操作元素,时间复杂度都是 O(1),这意味着它非常符合消息队列的模型。
如果把 List 当作队列,你可以这么来用。
生产者使用 LPUSH 发布消息:
127.0.0.1:6379> LPUSH queue msg1
(integer) 1
127.0.0.1:6379> LPUSH queue msg2
(integer) 2
版权声明:本文为qq_64513388原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。