redis、memcached、mongoDB 對比

來源:互聯網
上載者:User

標籤:height   適用於   需求   安全性   比較   服務   提升效能   分布   偽分布式   

Mongodb和Memcached不是一個範疇內的東西。Mongodb是文檔型的非關係型資料庫,其優勢在於查詢功能比較強大,能儲存海量資料。Mongodb 和 Memcached不存在誰替換誰的問題。 

Memcached 和 Redis它們都是記憶體型資料庫,資料儲存在記憶體中,通過tcp直接存取,優勢是速度快,並發高。 

Memcached 是一個高效能的分布式記憶體對象緩衝系統,用於動態Web應用以減輕資料庫負載。它通過在記憶體中快取資料和對象來減少讀取資料庫的次數,從而提供動態、資料庫驅動網站的速度。 

Memcached 的分布式不是在伺服器端實現的,而是在用戶端應用中實現的,即通過內建演算法制定目標資料的節點,Memcached 的分布式是基於用戶端的Key的hash來做均衡,是個偽分布式的系統。 

Redis是一個key-value儲存系統。和 Memcached 類似,它支援儲存的value類型相對更多,包括string(字串)、 list(鏈表)、set(集合)和zset(有序集合)。這些資料類型都支援push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,Redis支援各種不同方式的排序。與 Memcached 一樣,為了保證效率,資料都是緩衝在記憶體中。區別的是Redis會周期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案。 






1、效能 

   總體來講,TPS 方面 Redis 和 Memcache 差不多,要大於 Mongodb。 
   Redis 支援高並發量,官方宣傳支援10萬層級的並發讀寫。 

2、操作的便利性 

   Memcached 資料結構單一(key-value)。 
   Redis 支援的資料類型更多,資料操作方面,Redis 更好一些,也可以在伺服器端直接對資料進行豐富的操作,這樣可以減少網路IO次數和資料體積,同時還提供String、Hash、List、Set和Sorted Set等資料結構的儲存。 
   Mongodb 支援豐富的資料表達,索引,最類似關係型資料庫,支援的查詢語言非常豐富。 

3、記憶體空間的大小和資料量的大小 

   Redis 在 2.0 版本後增加了自己的 VM 特性,突破實體記憶體的限制,可以限定記憶體使用量大小,當資料超過閾值,則通過類似LRU的演算法把記憶體中的最不常用資料儲存到硬碟的分頁檔中;可以對 key value 設定到期時間(類似 Memcached);Redis一個value最大支援512MB。 
   Memcached 可以修改最大可用記憶體,採用 LRU 演算法;Memcached單個key-value大小有限,一個value最大隻支援1MB。 
   MongoDB 適合大資料量的儲存,依賴作業系統 VM 做記憶體管理,吃記憶體也比較厲害,服務不要和別的服務在一起。 

4、可靠性(持久化) 

   Redis 具有持久化機制,可以定期將記憶體中的資料持久化到硬碟上,Redis 支援(快照、AOF),依賴快照進行持久化,aof 增強了可靠性的同時,對效能有所影響。 
   Memcached 不支援資料持久化,斷電或重啟後資料消失,通常用在做緩衝,提升效能。 
   MongoDB 從 1.8 版本開始採用 binlog 方式支援持久化的可靠性。 

6、資料一致性(事務支援) 

   Memcached 在並發情境下,用 cas 保證一致性Redis 事務支援比較弱,只能保證事務中的每個操作連續執行。 
   MongoDB 不支援事務。 

7、資料分析 

   MongoDB 內建了資料分析的功能(mapreduce),其他不支援。 

8、應用情境 

   Redis:適用於對讀寫效率要求都很高,資料處理業務複雜和對安全性要求較高的系統;資料量較小的更效能操作和運算,Redis 只使用單核,而 Memcached 可以使用多核,所以平均每一個核上Redis在儲存小資料時比Memcached效能更高。 
   Memcached:用於在動態系統中減少資料庫負載,提升效能;做緩衝,提高效能(適合讀多寫少,對於資料量比較大,可以採用 sharding)。 
   MongoDB:主要解決海量資料的訪問效率問題。 


總結: 

    ? 沒有必要過於關注效能,因為二者的效能都已經足夠高了。由於Redis只使用單核,而Memcached可以使用多核,所以二者比較起來,平均每一個核上,Redis在儲存小資料時比Memcached效能更高。而在100k以上的資料中,Memcached效能要高於Redis。雖然Redis最近也在儲存大資料的效能上進行最佳化,但是比起Memcached,還是稍有遜色。說了這麼多,結論是,無論你使用哪一個,每秒處理請求的次數都不會成為瓶頸。 

    ? 在記憶體使用量效率上,如果使用簡單的key-value儲存,Memcached的記憶體利用率更高。而如果Redis採用hash結構來做key-value儲存,由於其組合式的壓縮,其記憶體利用率會高於Memcached。當然,這和你的應用情境和資料特性有關。 

    ? 如果你對資料持久化和資料同步有所要求,那麼推薦你選擇Redis。因為這兩個特性Memcached都不具備。即使你只是希望在升級或者重啟系統後快取資料不會丟失,選擇Redis也是明智的。 

    ? 當然,最後還得說到你的具體應用需求。Redis相比Memcached來說,擁有更多的資料結構,並支援更豐富的資料操作。通常在Memcached裡,你需要將資料拿到用戶端來進行類似的修改再set回去。這大大增加了網路IO的次數和資料體積。在Redis中,這些複雜的操作通常和一般的GET/SET一樣高效。所以,如果你需要緩衝能夠支援更複雜的結構和操作,那麼Redis會是不錯的選擇。

redis、memcached、mongoDB 對比

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.