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