可靠消費(fèi)
Redis:沒(méi)有相應(yīng)的機(jī)制保證消息的可靠消費(fèi)韵吨,如果發(fā)布者發(fā)布一條消息主慰,而沒(méi)有對(duì)應(yīng)的訂閱者的話(huà),這條消息將丟失,不會(huì)存在內(nèi)存中
RabbitMQ:具有消息消費(fèi)確認(rèn)機(jī)制泡徙,如果發(fā)布一條消息该肴,還沒(méi)有消費(fèi)者消費(fèi)該隊(duì)列葛假,那么這條消息將一直存放在隊(duì)列中障陶,直到有消費(fèi)者消費(fèi)了該條消息,以此可以保證消息的可靠消費(fèi)
可靠發(fā)布
Reids:不提供聊训,需自行實(shí)現(xiàn)
RabbitMQ:具有發(fā)布確認(rèn)功能抱究,保證消息被發(fā)布到服務(wù)器
高可用
Redis:采用主從模式,讀寫(xiě)分離带斑,但是故障轉(zhuǎn)移還沒(méi)有非常完善的官方解決方案
RabbitMQ:集群采用磁盤(pán)鼓寺、內(nèi)存節(jié)點(diǎn),任意單點(diǎn)故障都不會(huì)影響整個(gè)隊(duì)列的操作
持久化
Redis:redis的持久化是針對(duì)于整個(gè)redis緩存的內(nèi)容勋磕,它有RDB和AOF兩種持久化方式妈候,可以將整個(gè)redis實(shí)例持久化到磁盤(pán),以此來(lái)做數(shù)據(jù)備份挂滓,防止異常情況下導(dǎo)致數(shù)據(jù)丟失
RabbitMQ:隊(duì)列苦银,消息都可以選擇性持久化,持久化粒度更小赶站,更靈活
消費(fèi)者負(fù)載均衡
Redis:發(fā)布訂閱模式墓毒,一個(gè)隊(duì)列可以被多個(gè)消費(fèi)者同時(shí)訂閱,當(dāng)有消息到達(dá)時(shí)亲怠,會(huì)將該消息依次發(fā)送給每個(gè)訂閱者
RabbitMQ:可以被多個(gè)消費(fèi)者同時(shí)監(jiān)控消費(fèi),但是每一條消息只能被消費(fèi)一次柠辞,由于rabbitmq的消費(fèi)確認(rèn)機(jī)制团秽,因此它能夠根據(jù)消費(fèi)者的消費(fèi)能力而調(diào)整它的負(fù)載
隊(duì)列監(jiān)控
Redis:不提供,需自行實(shí)現(xiàn)
RabbitMQ:實(shí)現(xiàn)了后臺(tái)監(jiān)控平臺(tái)叭首,可以在該平臺(tái)上看到所有創(chuàng)建的隊(duì)列的詳細(xì)情況(內(nèi)存习勤,磁盤(pán),消費(fèi)者焙格,生產(chǎn)者图毕,速率等),良好的后臺(tái)管理平臺(tái)可以方面我們更好的使用眷唉。
流量控制
Redis:不提供予颤,需自行實(shí)現(xiàn)
RabbitMQ:服務(wù)器過(guò)載的情況,對(duì)生產(chǎn)者速率會(huì)進(jìn)行限制冬阳,保證服務(wù)可靠性
出入隊(duì)性能
對(duì)于RabbitMQ和Redis的入隊(duì)和出隊(duì)操作蛤虐,各執(zhí)行100萬(wàn)次,每10萬(wàn)次記錄一次執(zhí)行時(shí)間肝陪。
測(cè)試數(shù)據(jù)分為128Bytes驳庭、512Bytes、1K和10K四個(gè)不同大小的數(shù)據(jù)。
應(yīng)用場(chǎng)景分析
Redis: 輕量級(jí)饲常,低延遲蹲堂,高并發(fā),低可靠性
即時(shí)數(shù)據(jù)分析贝淤、秒殺計(jì)數(shù)器柒竞、緩存等
RabbitMQ:重量級(jí),高可靠霹娄,異步能犯,不保證實(shí)時(shí)
批量數(shù)據(jù)異步處理、并行任務(wù)串行化犬耻,高負(fù)載任務(wù)的負(fù)載均衡等
rabbitmq是一個(gè)專(zhuān)門(mén)的AMQP協(xié)議隊(duì)列踩晶,他的優(yōu)勢(shì)就在于提供可靠的隊(duì)列服務(wù),并且可做到異步枕磁,而redis主要是用于緩存的渡蜻,redis的發(fā)布訂閱模塊,可用于實(shí)現(xiàn)及時(shí)性计济,且可靠性低的功能茸苇。