mongodb使用場景 redis、memcache和mongodb各自的優(yōu)點(diǎn)是什么,怎么選擇呢?
redis、memcache和mongodb各自的優(yōu)點(diǎn)是什么,怎么選擇呢?Mongodb不應(yīng)該與redis/Memcache相比,因為它們的應(yīng)用場景完全不同。Mongodb是介于內(nèi)存數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫
redis、memcache和mongodb各自的優(yōu)點(diǎn)是什么,怎么選擇呢?
Mongodb不應(yīng)該與redis/Memcache相比,因為它們的應(yīng)用場景完全不同。
Mongodb是介于內(nèi)存數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫之間的數(shù)據(jù)庫。它是一個高性能、無模式的文檔數(shù)據(jù)庫。
Mongodb數(shù)據(jù)存儲在磁盤上。只有在必要時,才會通過MMAP映射到內(nèi)存,并在內(nèi)存中進(jìn)行修改。修改后,操作系統(tǒng)負(fù)責(zé)刷新磁盤。
優(yōu)點(diǎn):支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu),能存儲海量數(shù)據(jù),能提供關(guān)系數(shù)據(jù)庫等強(qiáng)大的查詢功能。
Redis是一個開源的鍵值存儲系統(tǒng)。所有數(shù)據(jù)都存儲在內(nèi)存中。持久性處于RDB模式或AOF模式。只支持key、string、hash、list和set。優(yōu)點(diǎn):讀寫速度非常快。缺點(diǎn):受內(nèi)存限制,不能存儲太多的數(shù)據(jù),不能提供強(qiáng)大的查詢功能,只能使用單核。
Memcache是一個高性能的分布式內(nèi)存對象緩存系統(tǒng),用于動態(tài)web應(yīng)用程序以減少數(shù)據(jù)庫負(fù)載。Memcache只支持簡單的鍵值結(jié)構(gòu),但使用多核。
在爬蟲中,經(jīng)常使用redis mongodb的方式。Mongodb用來存儲被爬網(wǎng)的海量數(shù)據(jù),redis用來消除重復(fù)并保存被爬網(wǎng)的URL。
爬蟲的數(shù)據(jù)庫選型,redis、leveldb、 mongodb、 mysql應(yīng)該選哪個?
如果選擇mongodb,爬蟲表的字段是不確定的,變化很大,所以像MySQL這樣的關(guān)系型數(shù)據(jù)庫是不合適的,不方便開發(fā)。redis的數(shù)據(jù)查詢功能相對較弱,有時被爬網(wǎng)的數(shù)據(jù)需要使用一些條件查詢進(jìn)行數(shù)據(jù)分析,這對條件查詢redis很有幫助。我不熟悉leveldb。Mongo基本上可以滿足上述所有要求,比如動態(tài)字段和條件查詢,因此非常適合存儲爬蟲數(shù)據(jù)。