Redis和MongoDB的區別(面試受用)

項目中用的是MongoDB,可是爲何用其實當時選型的時候也沒有太多考慮,只是認爲數據量比較大,因此採用MongoDB。html

最近又想起爲何用MongoDB,就查閱一下,彙總彙總:java

以前也用過redis,當時是用來存儲一些熱數據,量也不大,可是操做很頻繁。如今項目中用的是MongoDB,目前是百萬級的數據,未來會有千萬級、億級。面試

就Redis和MongoDB來講,你們通常稱之爲Redis緩存、MongoDB數據庫。這也是有道有理有根據的,redis

Redis主要把數據存儲在內存中,其「緩存」的性質遠大於其「數據存儲「的性質,其中數據的增刪改查也只是像變量操做同樣簡單;算法

MongoDB倒是一個「存儲數據」的系統,增刪改查能夠添加不少條件,就像SQL數據庫同樣靈活,這一點在面試的時候很受用。spring

點擊查看:MongoDB語法與現有關係型數據庫SQL語法比較數據庫

Mongodb與Redis應用指標對比

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位系統(32位有最大2.5G文件限制,64位沒有改限制) Redis2.0後增長虛擬內存特性,突破物理內存限制;數據能夠設置時效性,相似於memcache 不一樣的應用角度看,各有優點
可用性 支持master-slave,replicaset(內部採用paxos選舉算法,自動故障恢復),auto sharding機制,對客戶端屏蔽了故障轉移和切分機制 依賴客戶端來實現分佈式讀寫;主從複製時,每次從節點從新鏈接主節點都要依賴整個快照,無增量複製;不支持自動sharding,須要依賴程序設定一致hash機制 MongoDB優於Redis;單點問題上,MongoDB應用簡單,相對用戶透明,Redis比較複雜,須要客戶端主動解決。(MongoDB 通常會使用replica sets和sharding功能結合,replica sets側重高可用性及高可靠性,而sharding側重於性能、易擴展)
可靠性 從1.8版本後,採用binlog方式(MySQL一樣採用該方式)支持持久化,增長可靠性 依賴快照進行持久化;AOF加強可靠性;加強可靠性的同時,影響訪問性能 MongoDB優於Redis
一致性 不支持事物,靠客戶端自身保證 支持事物,比較弱,僅能保證事物中的操做按順序執行 Redis優於MongoDB
數據分析 內置數據分析功能(mapreduce) 不支持 MongoDB優於Redis
應用場景 海量數據的訪問效率提高 較小數據量的性能及運算 MongoDB優於Redis
相關文章
相關標籤/搜索