標籤:
MongoDB和Redis都是NoSQL,採用結構型資料存放區。二者在使用情境中,存在一定的區別,這也主要由於二者在記憶體映射的處理過程,持久化的處理方法不同。
MongoDB建議叢集部署,更多的考慮到叢集方案,Redis更偏重於進程順序寫入,雖然支援叢集,也僅限於主-從模式。
比較指標 |
MongoDB(v2.4.9) |
Redis(v2.4.17) |
比較說明 |
實現語言 |
c++ |
c/c++ |
- |
協議 |
BSON,自訂二進位 |
類telnet |
- |
效能 |
依賴記憶體,TPS較高 |
依賴記憶體,TPS非常高 |
Redis優於MongoDB |
可操作性 |
豐富的資料表達,索引;最類似於關係型資料庫,支援豐富的查詢語句 |
資料豐富,較少的IO |
MongoDB優於Redis |
記憶體及儲存 |
適合大資料量儲存,依賴系統虛擬記憶體,採用鏡像檔案儲存;記憶體佔用率比較高,官方建議獨立部署在64位系統 |
Redis2.0後支援虛擬記憶體特性(VM) 突破實體記憶體限制;資料可以設定時效性,類似於memcache |
不同的應用情境,各有千秋 |
可用性 |
支援master-slave,replicatset(內部採用paxos選舉演算法,自動故障恢複),auto sharding機制,對用戶端屏蔽了容錯移轉和切片機制 |
依賴用戶端來實現分布式讀寫;主從複製時,每次從節點重新串連主節點都要依賴整個快照,無差異複寫;不支援auto sharding,需要依賴程式設定一致性hash機制 |
MongoDB優於Redis;單點問題上,MongoDB應用簡單,相對使用者透明,Redis比較複雜,需要用戶端主動解決.(MongoDB一般使用replicasets和sharding相結合,replicasets側重高可用性以及高可靠,sharding側重效能,水平擴充) |
可靠性 |
從1.8版本後,採用binlog方式(類似Mysql) 支援持久化 |
依賴快照進行持久化;AOF增強可靠性;增強性的同時,影響訪問效能 |
|
一致性 |
不支援事務,靠用戶端保證 |
支援事務,比較脆,僅能保證事務中的操作按順序執行 |
Redis優於MongoDB |
資料分析 |
內建資料分析功能(mapreduce) |
不支援 |
MongoDB優於Redis |
應用情境 |
海量資料的訪問效率提升 |
較小資料量的效能和運算 |
MongoDB優於Redis |
MongoDB與Redis的比較