MongoDB 更類似 MySQL,支持欄位索引、游標操作,其優勢在於查詢功能比較強大,擅長查詢 JSON 數據,能存儲海量數據,但是不支持事務。 Redis 是一個開源(BSD許可)的,記憶體中的數據結構存儲系統,支持多種類型的數據結構,可用作資料庫,高速緩存和消息隊列代理。 1、記憶體管理機制 Re ...
MongoDB 更類似 MySQL,支持欄位索引、游標操作,其優勢在於查詢功能比較強大,擅長查詢 JSON 數據,能存儲海量數據,但是不支持事務。
Redis 是一個開源(BSD許可)的,記憶體中的數據結構存儲系統,支持多種類型的數據結構,可用作資料庫,高速緩存和消息隊列代理。
1、記憶體管理機制
Redis 數據全部存在記憶體,定期寫入磁碟,當記憶體不夠時,可以選擇指定的 LRU 演算法刪除數據。
MongoDB 數據存在記憶體,由 linux系統 mmap 實現,當記憶體不夠時,只將熱點數據放入記憶體,其他數據存在磁碟。
2、支持的數據結構
Redis 支持的數據結構豐富,包括hash、set、list等。
MongoDB 數據結構比較單一,但是支持豐富的數據表達,索引,最類似關係型資料庫,支持的查詢語言非常豐富。
3、數據量和性能:
當物理記憶體夠用的時候,redis>mongodb>mysql
當物理記憶體不夠用的時候,redis和mongodb都會使用虛擬記憶體。
實際上如果redis要開始虛擬記憶體,那很明顯要麼加記憶體條,要麼你換個資料庫了。
但是,mongodb不一樣,只要,業務上能保證,冷熱數據的讀寫比,使得熱數據在物理記憶體中,mmap的交換較少。
mongodb還是能夠保證性能。
4、性能
mongodb依賴記憶體,TPS較高;Redis依賴記憶體,TPS非常高。性能上Redis優於MongoDB。
5、可靠性
mongodb從1.8版本後,採用binlog方式(MySQL同樣採用該方式)支持持久化,增加可靠性;
Redis依賴快照進行持久化;AOF增強可靠性;增強可靠性的同時,影響訪問性能。
可靠性上MongoDB優於Redis。
6、數據分析
mongodb內置數據分析功能(mapreduce);而Redis不支持。
7、事務支持情況
Redis 事務支持比較弱,只能保證事務中的每個操作連續執行;mongodb不支持事務。
8、集群
MongoDB 集群技術比較成熟,Redis從3.0開始支持集群。
相關視頻教程推薦:《MongoDB教程》、《Redis教程》