1. 程式人生 > >RabbitMQ與Redis佇列對比

RabbitMQ與Redis佇列對比

本文僅針對RabbitMQ與Redis做佇列應用時的情況進行對比
具體採用什麼方式實現,還需要取決於系統的實際需求

簡要介紹

RabbitMQ

RabbitMQ是實現AMQP(高階訊息佇列協議)的訊息中介軟體的一種,最初起源於金融系統,用於在分散式系統中儲存轉發訊息,在易用性、擴充套件性、高可用性等方面表現不俗。訊息中介軟體主要用於元件之間的解耦,訊息的傳送者無需知道訊息使用者的存在,反之亦然。

Redis

是一個Key-Value的NoSQL資料庫,開發維護很活躍,雖然它是一個Key-Value資料庫儲存系統,但它本身支援MQ功能,所以完全可以當做一個輕量級的佇列服務來使用。

具體對比

可靠消費

Redis:沒有相應的機制保證訊息的消費,當消費者消費失敗的時候,訊息體丟失,需要手動處理
RabbitMQ:具有訊息消費確認,即使消費者消費失敗,也會自動使訊息體返回原佇列,同時可全程持久化,保證訊息體被正確消費

可靠釋出

Reids:不提供,需自行實現
RabbitMQ:具有釋出確認功能,保證訊息被髮布到伺服器

高可用

Redis:採用主從模式,讀寫分離,但是故障轉移還沒有非常完善的官方解決方案
RabbitMQ:叢集採用磁碟、記憶體節點,任意單點故障都不會影響整個佇列的操作

持久化

Redis:將整個Redis例項持久化到磁碟
RabbitMQ:佇列,訊息,都可以選擇是否持久化

消費者負載均衡

Redis:不提供,需自行實現
RabbitMQ:根據消費者情況,進行訊息的均衡分發

佇列監控

Redis:不提供,需自行實現
RabbitMQ:後臺可以監控某個佇列的所有資訊,(記憶體,磁碟,消費者,生產者,速率等)

流量控制

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

出入隊效能

對於RabbitMQ和Redis的入隊和出隊操作,各執行100萬次,每10萬次記錄一次執行時間。
測試資料分為128Bytes、512Bytes、1K和10K四個不同大小的資料。

注:此資料來源於網際網路,部分資料有誤,已修正

應用場景分析

Redis:輕量級,高併發,延遲敏感
即時資料分析、秒殺計數器、快取等

RabbitMQ:重量級,高併發,非同步
批量資料非同步處理、並行任務序列化,高負載任務的負載均衡等

參考文章:

相關推薦

RabbitMQRedis佇列對比

本文僅針對RabbitMQ與Redis做佇列應用時的情況進行對比具體採用什麼方式實現,還需要取決於系統的實際需求 簡要介紹 RabbitMQ RabbitMQ是實現AMQP(高階訊息佇列協議)的訊息中介軟體的一種,最初起源於金融系統,用於在分散式系統中儲存轉發訊息,在易用性、擴充套件性、高可用性等方

SSDB Redis命令對比

一、 【SSDB介紹】 一個高效能的支援豐富資料結構的 NoSQL 資料庫, 用於替代 Redis.(源自官方) 特性(源自官方) 替代 Redis 資料庫, Redis 的 100 倍容量  LevelDB 網路支援, 使用 C/C++ 開發  Redis AP

php apc快取以及redis對比

APC簡介 APC的全稱為Alternative PHP Cache, 是一款開源的php外掛,用來對php的程式碼或者使用者資料進行快取。 APC 對php程式碼的快取 apc可以去掉php動態解析以及編譯的時間,php指令碼可以執行的更快。下面這張圖很好的說明

RabbitMQKafka選型對比

背景   本公司是.Net專案,在.Net可選的MQ比較少,主要Kafka和RabbitMQ,RabbitMQ我也是使用多年了,最近的Kafka廣告與流行度我也是無法無視,因此也是花了點時間收集了資料做了些對比。   此外有個小插曲,當我形成了文件讓老闆兼CTO對比決策後,他打算上阿里雲買MQ服務。我當時給他

RedisRabbitMQ作為訊息佇列對比

RabbitMQ RabbitMQ是實現AMQP(高階訊息佇列協議)的訊息中介軟體的一種,最初起源於金融系統,用於在分散式系統中儲存轉發訊息,在易用性、擴充套件性、高可用性等方面表現不俗。訊息中介軟體主要用於元件之間的解耦,訊息的傳送者無需知道

RedisRabbitMQ作為訊息佇列的比較

本文僅針對RabbitMQ與Redis做佇列應用時的情況進行對比 具體採用什麼方式實現,還需要取決於系統的實際需求 簡要介紹 RabbitMQ RabbitMQ是實現AMQP(高階訊息佇列協議)的訊息中介軟體的一種,最初起源於金融系統,用於在分散式系統中儲存轉發訊

訊息佇列效能對比——ActiveMQ、RabbitMQZeroMQ(譯文)

Dissecting Message Queues 概述:   我花了一些時間解剖各種庫執行分散式訊息。在這個分析中,我看了幾個不同的方面,包括API特性,易於部署和維護,以及效能質量.。訊息佇列已經被分為兩組:brokerless和brokered。   brok

RabbitMQRedis、ZeroMQ、ActiveMQ、Kafka/Jafka對比

特性 bytes key cer 記錄 rabbitmq consumer apache target RabbitMQRabbitMQ是使用Erlang編寫的一個開源的消息隊列,本身支持很多的協議:AMQP,XMPP, SMTP, STOMP,也正因如此,它非常重量級

【Spring Boot學習總結】14.Spring Boot整合Redis-傳統方式對比

前面我們講解了如何使用Spring Boot來控制事務,下面我們來講解一下如何使用Spring Boot來整合Redis 為了對比傳統工程與Spring Boot整合的不同,以及彰顯Spring Boot整合的優勢,我們會逐一剖析傳統整合方式與Spring Boot整合方式。 一、傳統方式整

RabbitMQ(訊息佇列)叢集配置使用篇

介紹 MQ全稱為Message Queue, 訊息佇列(MQ)是一種應用程式對應用程式的通訊方法。應用程式通過讀寫出入佇列的訊息(針對應用程式的資料)來通訊,而無需專用連線來連結它們。訊息傳遞指的是程式之間通過在訊息中傳送資料進行通訊,而不是通過直接呼叫彼此來通訊,直接呼叫通常是用於諸如遠端過程呼叫的

rabbitmqredis用作訊息佇列的區別

將redis釋出訂閱模式用做訊息佇列和rabbitmq的區別: 可靠性   redis :沒有相應的機制保證訊息的可靠消費,如果釋出者釋出一條訊息,而沒有對應的訂閱者的話,這條訊息將丟失,不會存在記憶體中;rabbitmq:具有訊息消費確認機制,如果釋出一條訊息,還沒有消費者消費該佇

redis 訊息釋出訂閱訊息佇列

redis可以實現訊息的釋出訂閱,可以用作java中的訂閱釋出模式 純粹redis的釋出訂閱  redis客戶端1中使用命令 SUBSCRIBE talk 可以訂閱通道 talk上的訊息  redis客戶端2中也同樣執行這個命令一起訂閱通道 talk  redis客

RabbitMQ 之Hello World 工作佇列 (一)

<dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <vers

RabbitMQ入門訊息佇列模式詳解

1.RabbitMQ概述 簡介  MQ全稱為Message Queue,訊息佇列是應用程式和應用程式之間的通訊方法; RabbitMQ是開源的,實現了AMQP協議的,採用Erlang(面向併發程式語言)編寫的,可複用的企業級訊息系統; AMQP(高階訊息佇列協議)是一個非

Redis分散式部署,一致性hash;分散式快取佇列

最近研究redis-cluster,正好搭建了一個環境,遇到了很多坑,系統的總結下,等到redis3 release出來後,換掉memCache 叢集. 轉載請註明出處哈:http://hot66hot.iteye.com/admin/blogs/2050676 一:關於redis cluster 1

Redis實現分散式鎖任務佇列的思路

一, 實現思路 1.Redis實現分散式鎖思路 思路很簡單,主要用到的redis函式是setnx(),這個應該是實現分散式鎖最主要的函式。首先是將某一任務標識名(這裡用Lock:order作為標識名的例子)作為鍵存到redis裡,併為其設個過期時間,如果是還有Lock:order請求過來,先

訊息佇列RabbitMQSpring整合

1.RabbitMQ簡介 RabbitMQ是流行的開源訊息佇列系統,用erlang語言開發。RabbitMQ是AMQP(高階訊息佇列協議)的標準實現。 官網:http://www.rabbitmq.com/ 2.Spring整合RabbitM

RabbitMQ高階特性-消費端ACK重回佇列

消費端ACK與重回佇列 消費端ACK 消費端的手工ACK和NACK, ACK是確認成功消費, NACK表示訊息處理失敗, 會重發訊息 消費端進行消費的時候, 如果由於業務異常我們可以進行日誌的記錄, 然後進行補償 如果由於伺服器宕機等嚴重問題, 就需要手工進行

斐波那契堆 插入、 Extract-Min(查詢+刪除)效率 STL優先佇列對比

插入 n個隨機資料,取m次最小值並pop掉 n=10000000(一千萬),m=0 (純插入,一個o1,一個logn) fib:耗時8377ms stl:耗時5086ms n = 5000000(五百萬), m=20000(2萬)  fib:耗時4945ms stl

HBase、MongoDB、MySQL、Oracle、Redis--nosql資料庫關係資料庫對比

HBase vs. MongoDB vs. MySQL vs. Oracle vs. Redis,三大主流開源 NoSQL 資料庫的 PK 兩大主流傳統 SQL 資料庫 類別 HBase MongoDB MySQL Oracle Redis 描述 基於 Ap