redis與rabbitmq做訊息佇列的區別

2021-10-25 10:44:36 字數 1296 閱讀 9877

訊息佇列(message queue)是一種應用間的通訊方式,訊息傳送後可以立即返回,由訊息系統來確保訊息的可靠傳遞。訊息發布者只管把訊息發布到 mq 中而不用管誰來取,訊息使用者只管從 mq 中取訊息而不管是誰發布的。這樣發布者和使用者都不用知道對方的存在。

redis

在我的學習過程中,redis就是乙個記憶體資料庫,具有豐富的資料型別,當然也支援佇列queue,redis支援資料持久化,主從集群。redis不僅僅支援簡單的key-value型別的資料,同時還提供list,set,zset,hash等資料結構的儲存。

rabbitmq

是乙個專門做佇列的框架,在佇列方面要比redies佇列效能要好,支援的功能會更多,訊息的可靠性更強,可以根據路由規則去選擇進入哪乙個佇列,做到更加細緻的訊息分發

可靠性redis :沒有相應的機制保證訊息的可靠消費,如果發布者發布一條訊息,而沒有對應的訂閱者的話,這條訊息將丟失,不會存在記憶體中;

rabbitmq:具有訊息消費確認機制,如果發布一條訊息,還沒有消費者消費該佇列,那麼這條訊息將一直存放在佇列中,直到有消費者消費了該條訊息,以此可以保證訊息的可靠消費,那麼rabbitmq的訊息是如何儲存的呢?(後續更新);

實時性redis:實時性高,redis作為高效的快取伺服器,所有資料都存在記憶體中,所以它具有更高的實時性

消費者負載均衡:

rabbitmq佇列可以被多個消費者同時監控消費,但是每一條訊息只能被消費一次,由於rabbitmq的消費確認機制,因此它能夠根據消費者的消費能力而調整它的負載;

redis發布訂閱模式,乙個佇列可以被多個消費者同時訂閱,當有訊息到達時,會將該訊息依次傳送給每個訂閱者,她是一種訊息的廣播形式,redis本身不做消費者的負載均衡,因此消費效率存在瓶頸;

永續性redis:redis的持久化是針對於整個redis快取的內容,它有rdb和aof兩種持久化方式(redis持久化方式,後續更新),可以將整個redis例項持久化到磁碟,以此來做資料備份,防止異常情況下導致資料丟失。

rabbitmq:佇列,每條訊息都可以選擇性持久化,持久化粒度更小,更靈活;

佇列監控

rabbitmq實現了後台監控平台,可以在該平台上看到所有建立的佇列的詳細情況,良好的後台管理平台可以方面我們更好的使用;

redis沒有所謂的監控平台。

總結redis:輕量級,低延遲,高併發,低可靠性;

rabbitmq:重量級,高可靠,非同步,不保證實時;

rabbitmq

是乙個專門的amqp協議佇列,他的優勢就在於提供可靠的佇列服務,並且可做到非同步,而redis主要是用於快取的,redis的發布訂閱模組,可用於實現及時性,且可靠性低的功能。

RabbitMQ跟Redis做訊息佇列的區別

區別 rabbitmq安裝 然後http localhost 15672 進得去 說明安裝成功 有三種模式 fanout direct topic fanout 傳送到所有的佇列 direct 可以設定key 傳送到對應的佇列 topic 第二種的增強版 key支援模糊匹配 自己建立賬號 不要用gu...

RabbitMQ與Redis佇列對比

本文僅針對rabbitmq與redis做佇列應用時的情況進行對比 具體採用什麼方式實現,還需要取決於系統的實際需求 rabbitmq是實現amqp 高階訊息佇列協議 的訊息中介軟體的一種,最初起源於金融系統,用於在分布式系統中儲存 訊息,在易用性 擴充套件性 高可用性等方面表現不俗。訊息中介軟體主要...

RabbitMQ與Redis佇列對比

rabbitmq是實現amqp 高階訊息佇列協議 的訊息中介軟體的一種,最初起源於金融系統,用於在分布式系統中儲存 訊息,在易用性 擴充套件性 高可用性等方面表現不俗。訊息中介軟體主要用於元件之間的解耦,訊息的傳送者無需知道訊息使用者的存在,反之亦然。是乙個key value的nosql資料庫,開發...