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應用名額對比