redis與mongodb的區別總結
阿新 • • 發佈:2020-01-09
MongoDB更類似MySQL,支援欄位索引、遊標操作,其優勢在於查詢功能比較強大,擅長查詢JSON資料,能儲存海量資料,但是不支援事務。
Mysql在大資料量時效率顯著下降,MongoDB更多時候作為關係資料庫的一種替代。
mongodb更吃記憶體,因為當mongo發現記憶體不夠的時候,是以2的指數級別來申請記憶體的。所以一般都建議把mongodb單獨放。
其實可以說redis更像快取機制,cookie,也可以設定資料的過期時間,當然也可以永久儲存(但是好像稍遜色?)。mongodb是文件式的儲存。
記憶體管理機制:
Redis資料全部存在記憶體,定期寫入磁碟,當記憶體不夠時,可以選擇指定的LRU演算法刪除資料。
MongoDB和mysql一樣,只是把索引檔案放到記憶體中。由linux系統mmap實現,當記憶體不夠時,只將熱點資料放入記憶體,其他資料存在磁碟。
支援的資料結構:
Redis支援的資料結構豐富,包括hash、set、list等。
MongoDB資料結構比較單一,但是支援豐富的資料表達,索引,最類似關係型資料庫,支援的查詢語言非常豐富。
效能:
redis更適用於較小資料量的效能及運算
mongodb則在海量資料的訪問下效能更優
可靠性:
二者均支援持久化。
叢集:
MongoDB叢集技術比較成熟,Redis從3.0開始支援叢集。
不適用場景:
Ø 需要使用複雜sql的操作
Ø 事務性系統
適用場景:
Redis 最佳應用場景:適用於資料變化快且資料庫大小可遇見(適合記憶體容量)的應用程式。
MongoDB:最佳應用場景:適用於需要動態查詢支援;需要使用索引而不是 map/reduce功能;需要對大資料庫有效能要求;需要使用 CouchDB但因為資料改變太頻繁而佔滿記憶體的應用程式。