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