溫馨提示×

redis和mongodb的區(qū)別

小晨
2057
2021-07-05 19:11:38
欄目: 云計(jì)算

redis和mongodb的區(qū)別:1、在TPS方面redis性能要比mongodb大;2、redis操作更加便利,擁有較少的網(wǎng)絡(luò)IO次數(shù);3、mongoDB適合大數(shù)據(jù)量的存儲(chǔ),而redis能夠存儲(chǔ)的數(shù)據(jù)比mongoDB要少點(diǎn);4、redis支持快照、AOF持久化,而mongodb從1.8版本才開始采用binlog方式支持持久化;5、mongoDB內(nèi)置了數(shù)據(jù)分析的功能,而redis不支持;6、雖然redis事務(wù)支持比較弱,但mongoDB則是不能夠支持事務(wù);7、redis更適合用在數(shù)據(jù)量較小的操作上,而mongodb則是主要用來解決訪問海量數(shù)據(jù)的效率問題。

redis和mongodb的區(qū)別

從以下幾個(gè)維度,對redis、mongoDB做了對比:

1、性能

都比較高,性能對我們來說應(yīng)該都不是瓶頸。

總體來講,TPS方面redis要大于mongodb。

2、操作的便利性

redis豐富一些,數(shù)據(jù)操作方面,redis更好一些,較少的網(wǎng)絡(luò)IO次數(shù)。

mongodb支持豐富的數(shù)據(jù)表達(dá),索引,最類似關(guān)系型數(shù)據(jù)庫,支持的查詢語言非常豐富。

3、內(nèi)存空間的大小和數(shù)據(jù)量的大小

redis在2.0版本后增加了自己的VM特性,突破物理內(nèi)存的限制;可以對key value設(shè)置過期時(shí)間(類似memcache)

mongoDB適合大數(shù)據(jù)量的存儲(chǔ),依賴操作系統(tǒng)VM做內(nèi)存管理,吃內(nèi)存也比較厲害,服務(wù)不要和別的服務(wù)在一起。

4、可用性(單點(diǎn)問題)

對于單點(diǎn)問題,

redis,依賴客戶端來實(shí)現(xiàn)分布式讀寫;主從復(fù)制時(shí),每次從節(jié)點(diǎn)重新連接主節(jié)點(diǎn)都要依賴整個(gè)快照,無增量復(fù)制,因性能和效率問題,所以單點(diǎn)問題比較復(fù)雜;不支持自動(dòng)sharding,需要依賴程序設(shè)定一致hash 機(jī)制。

一種替代方案是,不用redis本身的復(fù)制機(jī)制,采用自己做主動(dòng)復(fù)制(多份存儲(chǔ)),或者改成增量復(fù)制的方式(需要自己實(shí)現(xiàn)),一致性問題和性能的權(quán)衡。

mongoDB支持master-slave,replicaset(內(nèi)部采用paxos選舉算法,自動(dòng)故障恢復(fù)),auto sharding機(jī)制,對客戶端屏蔽了故障轉(zhuǎn)移和切分機(jī)制。

5、可靠性(持久化)

對于數(shù)據(jù)持久化和數(shù)據(jù)恢復(fù),

redis支持(快照、AOF):依賴快照進(jìn)行持久化,aof增強(qiáng)了可靠性的同時(shí),對性能有所影響。

MongoDB從1.8版本開始采用binlog方式支持持久化的可靠性。

6、數(shù)據(jù)一致性(事務(wù)支持)

redis事務(wù)支持比較弱,只能保證事務(wù)中的每個(gè)操作連續(xù)執(zhí)行。

mongoDB不支持事務(wù)。

7、數(shù)據(jù)分析

mongoDB內(nèi)置了數(shù)據(jù)分析的功能(mapreduce),其他不支持。

8、應(yīng)用場景

redis:數(shù)據(jù)量較小的更性能操作和運(yùn)算上。

MongoDB:主要解決海量數(shù)據(jù)的訪問效率問題。

0