MongoDB和Redis哪個好?MongoDB是由C++語言編寫的基于分布式文件存儲的開源數(shù)據(jù)庫系統(tǒng);Redis是使用ANSI C語言編寫的一個基于內(nèi)存、可持久化、鍵值對模式的NoSQL數(shù)據(jù)庫,也可用作緩存。下面來看下MongoDB和Redis的區(qū)別有哪些。
MongoDB和Redis的區(qū)別對比:
1、數(shù)據(jù)結(jié)構(gòu)
Redis支持多種數(shù)據(jù)結(jié)構(gòu),如string(字符串)、 list(雙向鏈表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基數(shù)估算)等。支持持久化操作,可以進行aof及rdb數(shù)據(jù)持久化到磁盤,從而進行數(shù)據(jù)備份或數(shù)據(jù)恢復(fù)等操作,較好的防止數(shù)據(jù)丟失的手段。
MongoDB支持豐富的數(shù)據(jù)表達,索引,最類似關(guān)系型數(shù)據(jù)庫,支持的查詢語言非常豐富。查詢指令使用 JSON形式的標(biāo)記,可輕易查詢文檔中內(nèi)嵌的對象及數(shù)組。
2、應(yīng)用場景
Redis典型的應(yīng)用場景包括:緩存、排行榜、計數(shù)器、社交網(wǎng)絡(luò)、消息隊列等,適用于數(shù)據(jù)量較小的更性能操作和運算上。MongoDB主要解決海量數(shù)據(jù)的訪問效率問題,多應(yīng)用于大數(shù)據(jù)、內(nèi)容管理系統(tǒng)、移動端Apps、數(shù)據(jù)管理等。
3、數(shù)據(jù)一致性和數(shù)據(jù)分析
Redis事務(wù)支持比較弱,只能保證事務(wù)中的每個操作連續(xù)執(zhí)行;mongoDB雖不支持事務(wù),但內(nèi)置了數(shù)據(jù)分析的功能(mapreduce)。
4、內(nèi)存管理
Redis數(shù)據(jù)全部存在內(nèi)存,定期寫入磁盤,當(dāng)內(nèi)存不夠時,可以選擇指定的LRU算法刪除數(shù)據(jù)。MongoDB數(shù)據(jù)會優(yōu)先存于內(nèi)存,當(dāng)內(nèi)存不夠時,只將熱點數(shù)據(jù)放入內(nèi)存,其他數(shù)據(jù)存在磁盤。需要注意的是Redis和mongoDB特別消耗內(nèi)存,一般不建議將它們和別的服務(wù)部署在同一臺服務(wù)器上。