天天看點

Redis和MongoDB的差別(轉載)

Redis和MongoDB的差別

學東西,要深究。

就Redis和MongoDB來說,大家一般稱之為Redis緩存,MongoDB資料庫。

Redis主要把資料存儲在記憶體中,其緩存的性質遠大于資料存儲的性質,其中資料的增删改查也隻是像變量操作一樣簡單。

MongoDB是一個存儲資料的系統,增删改查可以添加很多條件,像SQL資料庫一樣靈活(面試會考)。

應用名額對比

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

Question:

1.MongoDB文法與現有關系型資料庫SQL文法比較

2.什麼是SQL?

3.什麼是結構型資料存儲?

4.研究下Redis對叢集的支援。

5.BSON?

6. 類Telnet?

7. TPS?

8. 重點研究下可用性。

9. binlog方式(mysql也是這種方式)

10.何為Redis快照。 AOF

11.内置資料分析功能(mapreduce)?啥玩意?

轉載自:Mongodb與Redis應用名額對比

繼續閱讀