redis是乙個高效能的key-value資料庫,支援訊息推送功能,可以當做乙個輕量級的佇列伺服器使用。
redis只是提供乙個高效能的、原子操作記憶體鍵值隊,具有高速訪問能力,雖然可以做訊息佇列的儲存,但不具備訊息佇列的任何功能和邏輯。
redis2.0開始支援發布/訂閱指令,發布者呼叫redis的pushlish方法往特定的channel傳送訊息,訂閱者在初始化的時候訂閱該channel,有訊息就會立即接收。
redis訊息推送多用於實時性較高的訊息推送,並不保證可靠。mq保證可靠但有一些延遲。
redis發布訂閱除了表示不同的topic外,並不支援分組。mq發布訊息,多個訂閱者可以分組,同乙個組裡只有乙個訂閱者會收到該訊息。
mq的優勢在於提供可靠的佇列服務,可以做到非同步,redis主要用於快取,redis的發布訂閱模組,可實現及時性,且可靠性低的功能。
1.可靠性
redis:沒有機制保證訊息的可靠性,發布一條訊息沒有對應的訂閱者的話,這條訊息將丟失,不會存在記憶體中。
mq:具有訊息確認機制,發布一條訊息,沒有消費者消費該佇列,這條訊息一直存放在佇列中,直到有消費者消費了該條訊息,保證訊息的可靠消費。
2.實時性
redis實時性高,redis是高效的快取伺服器,所有資料到存在記憶體中,所以具有更高的實時性。
3.消費者負載均衡
mq佇列可以被多個消費者同時監控消費,但每一條訊息只能消費一次,由於mq的消費確認機制,因此能夠根據消費者的消費能力調整負載。
redis發布訂閱模式,乙個佇列可被多個消費者同時訂閱,訊息到達時,會將訊息一次傳送給每個訂閱者,是一種訊息的廣播形式,redis本身不做消費者的負載均衡,因此消費效率存在瓶頸。
4.永續性
redis:redis的持久化是針對整個redis快取,可將整個redis例項持久化到磁碟來做備份,以防止異常情況下導致資料丟失。
mq:每條訊息都可以選擇持久化,持久化粒度更小,更靈活。
5.佇列監控
mq實現了後台監控平台,可在平台上看到所有建立的佇列的詳細情況。redis沒有監控平台。
6.效能
發布訊息時,資料較小時,redis效能高於mq,資料大小超過10k時redis比較慢。讀取訊息時,無論資料大小,redis效能高於mq。
總結:
redis:輕量級,低延遲,高併發,低可靠性。
mq:重量級,高可靠,一步,不保證實時。
Redis佇列跟MQ的區別
redis佇列 redis佇列是乙個key value的nosql資料庫,開發維護很活躍,雖然是乙個key value資料庫儲存系統,但它本身支援mq功能,所以完全可以當做乙個輕量級的佇列服務來使用 mq佇列 在分布式系統中儲存 訊息,在易用性 擴充套件性 高可用等方面表現不俗,主要是為了實現系統之...
Redis List和MQ的區別
容錯機制需要保證出錯後資訊還會被重新插入佇列,在redis中需要手動trycatch處理。在其他訊息佇列中都有提供容錯機制,比如訊息取出變為掛起狀態,一定時間內沒有刪除就會重新插入佇列。訊息佇列中有延遲的概念,取出後判斷是否在延遲時間內,如果在則重新插入佇列,達到延遲效果。redis的推送方式注重快...
Kafka與MQ的區別
作為訊息佇列來說,企業中選擇mq的還是多數,因為像rabbit,rocket等mq中介軟體都屬於很成熟的產品,效能一般但可靠性較強,而kafka原本設計的初衷是日誌統計分析,現在基於大資料的背景下也可以做運營資料的分析統計,而redis的主要場景是記憶體資料庫,作為訊息佇列來說可靠性太差,而且速度太...