MongoDB更類似MySQL,支持字段索引、游標操作,其優(yōu)勢在于查詢功能比較強大,擅長查詢JSON數(shù)據(jù),能存儲海量數(shù)據(jù),但是不支持事務。
Mysql在大數(shù)據(jù)量時效率顯著下降,MongoDB更多時候作為關系數(shù)據(jù)庫的一種替代。
mongodb更吃內存,因為當mongo發(fā)現(xiàn)內存不夠的時候,是以2的指數(shù)級別來申請內存的。所以一般都建議把mongodb單獨放。
其實可以說redis更像緩存機制,cookie,也可以設定數(shù)據(jù)的過期時間,當然也可以永久存儲(但是好像稍遜色?)。mongodb是文檔式的存儲。
內存管理機制:
Redis數(shù)據(jù)全部存在內存,定期寫入磁盤,當內存不夠時,可以選擇指定的LRU算法刪除數(shù)據(jù)。
MongoDB和mysql一樣,只是把索引文件放到內存中。由linux系統(tǒng)mmap實現(xiàn),當內存不夠時,只將熱點數(shù)據(jù)放入內存,其他數(shù)據(jù)存在磁盤。
支持的數(shù)據(jù)結構:
Redis支持的數(shù)據(jù)結構豐富,包括hash、set、list等。
MongoDB數(shù)據(jù)結構比較單一,但是支持豐富的數(shù)據(jù)表達,索引,最類似關系型數(shù)據(jù)庫,支持的查詢語言非常豐富。
性能:
redis更適用于較小數(shù)據(jù)量的性能及運算
mongodb則在海量數(shù)據(jù)的訪問下性能更優(yōu)
可靠性:
二者均支持持久化。
集群:
MongoDB集群技術比較成熟,Redis從3.0開始支持集群。
不適用場景:
Ø 需要使用復雜sql的操作
Ø 事務性系統(tǒng)
適用場景:
Redis 最佳應用場景:適用于數(shù)據(jù)變化快且數(shù)據(jù)庫大小可遇見(適合內存容量)的應用程序。
MongoDB:最佳應用場景:適用于需要動態(tài)查詢支持;需要使用索引而不是 map/reduce功能;需要對大數(shù)據(jù)庫有性能要求;需要使用 CouchDB但因為數(shù)據(jù)改變太頻繁而占滿內存的應用程序。
您可能感興趣的文章:- Redis分布式鎖的實現(xiàn)方式(redis面試題)
- Redis實現(xiàn)分布式鎖的幾種方法總結
- 詳解使用Redis SETNX 命令實現(xiàn)分布式鎖
- Redis上實現(xiàn)分布式鎖以提高性能的方案研究
- 基于Redis實現(xiàn)分布式鎖以及任務隊列
- golang實現(xiàn)redis的延時消息隊列功能示例
- Docker部署Django+Mysql+Redis+Gunicorn+Nginx的實現(xiàn)
- redis分布式鎖的go-redis實現(xiàn)方法詳解