MongoDB 和 Redis 都是 NoSQL,采用結構型數據存儲。二者在使用場景中,存在一定的區別, 這也主要由於二者在內存映射的處理過程,持久化的處理方法不同。MongoDB 建議集群部署,更多 的考慮到集群方案,Redis 更偏重於進程順序寫入,雖然支持集群,也僅限於主-從模式。
Redis 優點:
a) 讀寫性能優異
b) 支持數據持久化,支持 AOF 和 RDB 兩種持久化方式(https://www.cnblogs.com/chenliangcl/p/7240350.html)
c) 支持主從復制,主機會自動將數據同步到從機,可以進行讀寫分離。
d) 數據結構豐富:數據結構豐富:支持 string、hash、set、sortedset、list 等數據結構。
缺點:
e) Redis 不具備自動容錯和恢復功能,主機從機的宕機都會導致前端部分讀寫請求失敗,需要 等待機器重啟或者手動切換前端的 IP 才能恢復。
f) 主機宕機,宕機前有部分數據未能及時同步到從機,切換 IP 后還會引入數據不一致的問題, 降低了系統的可用性。
h) Redis 較難支持在線擴容,在集群容量達到上限時在線擴容會變得很復雜。為避免這一問題, 運維人員在系統上線時必須確保有足夠的空間,這對資源造成了很大的浪費。
MongoDB 優點:
a)弱一致性(最終一致),更能保證用戶的訪問速度
b)文檔結構的存儲方式,能夠更便捷的獲取數
c)內置 GridFS,高效存儲二進制大對象 (比如照片和視頻)
d)支持復制集、主備、互為主備、自動分片等特性
e)動態查詢
f)全索引支持,擴展到內部對象和內嵌數組
缺點:
a)不支持事務
b)MongoDB 占用空間過大
c)維護工具不夠成熟