Redis消息隊列與RabbitMQ的比較

可靠消費

Redis:沒有相應的機制保證消息的可靠消費,如果發(fā)布者發(fā)布一條消息,而沒有對應的訂閱者的話,這條消息將丟失,不會存在內存中
RabbitMQ:具有消息消費確認機制,如果發(fā)布一條消息,還沒有消費者消費該隊列,那么這條消息將一直存放在隊列中,直到有消費者消費了該條消息,以此可以保證消息的可靠消費

可靠發(fā)布

Reids:不提供,需自行實現(xiàn)
RabbitMQ:具有發(fā)布確認功能,保證消息被發(fā)布到服務器

高可用

Redis:采用主從模式,讀寫分離,但是故障轉移還沒有非常完善的官方解決方案
RabbitMQ:集群采用磁盤、內存節(jié)點,任意單點故障都不會影響整個隊列的操作

持久化

Redis:redis的持久化是針對于整個redis緩存的內容,它有RDB和AOF兩種持久化方式,可以將整個redis實例持久化到磁盤,以此來做數(shù)據(jù)備份,防止異常情況下導致數(shù)據(jù)丟失
RabbitMQ:隊列,消息都可以選擇性持久化,持久化粒度更小,更靈活

消費者負載均衡

Redis:發(fā)布訂閱模式,一個隊列可以被多個消費者同時訂閱,當有消息到達時,會將該消息依次發(fā)送給每個訂閱者
RabbitMQ:可以被多個消費者同時監(jiān)控消費,但是每一條消息只能被消費一次,由于rabbitmq的消費確認機制,因此它能夠根據(jù)消費者的消費能力而調整它的負載

隊列監(jiān)控

Redis:不提供,需自行實現(xiàn)
RabbitMQ:實現(xiàn)了后臺監(jiān)控平臺,可以在該平臺上看到所有創(chuàng)建的隊列的詳細情況(內存,磁盤,消費者,生產者,速率等),良好的后臺管理平臺可以方面我們更好的使用。

流量控制

Redis:不提供,需自行實現(xiàn)
RabbitMQ:服務器過載的情況,對生產者速率會進行限制,保證服務可靠性

出入隊性能

對于RabbitMQ和Redis的入隊和出隊操作,各執(zhí)行100萬次,每10萬次記錄一次執(zhí)行時間。
測試數(shù)據(jù)分為128Bytes、512Bytes、1K和10K四個不同大小的數(shù)據(jù)。


image.png

應用場景分析

Redis: 輕量級,低延遲,高并發(fā),低可靠性
即時數(shù)據(jù)分析、秒殺計數(shù)器、緩存等

RabbitMQ:重量級,高可靠,異步,不保證實時
批量數(shù)據(jù)異步處理、并行任務串行化,高負載任務的負載均衡等

rabbitmq是一個專門的AMQP協(xié)議隊列,他的優(yōu)勢就在于提供可靠的隊列服務,并且可做到異步,而redis主要是用于緩存的,redis的發(fā)布訂閱模塊,可用于實現(xiàn)及時性,且可靠性低的功能。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容