1. 程式人生 > >分散式快取學習之一:Memcached, Redis, MongoDB區別

分散式快取學習之一:Memcached, Redis, MongoDB區別

Redis是一個開源(BSD許可),記憶體儲存的資料結構伺服器,可用作資料庫,快取記憶體和訊息佇列代理。

  Memcached是一個自由開源的,高效能,分散式記憶體物件快取系統。

  MongoDB是一個基於分散式檔案儲存的資料庫,文件型的非關係型資料庫,與上面兩者不同。

 

 

1.效能上:

     效能上都很出色,具體到細節,由於Redis只使用單核,而Memcached可以使用多核,所以平均每一個核上Redis在儲存小資料時比Memcached效能更高。而在100k以上的資料中,Memcached效能要高於Redis,雖然Redis最近也在儲存大資料的效能上進行優化,但是比起 Memcached,還是稍有遜色。

前兩者效能差不多,大於 Mongodb。

 

2.記憶體空間和資料量大小:

     MemCached可以修改最大記憶體,採用LRU演算法。Redis增加了VM的特性,突破了實體記憶體的限制。

   MongoDB 適合大資料量的儲存,依賴作業系統 VM 做記憶體管理,吃記憶體也比較厲害,服務不要和別的服務在一起

 

3.操作便利上:

     MemCached資料結構單一,僅用來快取資料,而Redis支援更加豐富的資料型別,也可以在伺服器端直接對資料進行豐富的操作,這樣可以減少網路IO次數和資料體積。

   Mongodb 支援豐富的資料表達,索引,最類似關係型資料庫,支援的查詢語言非常豐富。

 

4.可靠性上:

     MemCached不支援資料持久化,斷電或重啟後資料消失,但其穩定性是有保證的。Redis支援資料持久化和資料恢復,允許單點故障,但是同時也會付出效能的代價。

   MongoDB 從 1.8 版本開始採用 binlog 方式支援持久化的可靠性。

 

5.應用場景:

     Memcached:動態系統中減輕資料庫負載,提升效能;做快取,適合多讀少寫,大資料量的情況(如人人網大量查詢使用者資訊、好友資訊、文章資訊等)。

     Redis:適用於對讀寫效率要求都很高,資料處理業務複雜和對安全性要求較高的系統(如新浪微博的計數和微博釋出部分系統,對資料安全性、讀寫要求都很高)。

   MongoDB:主要解決海量資料的訪問效率問題。 

 

需要慎重考慮的部分

 

1.Memcached單個key-value大小有限,一個value最大隻支援1MB,而Redis最大支援512MB

2.Memcached只是個記憶體快取,對可靠性無要求;而Redis更傾向於記憶體資料庫,因此對對可靠性方面要求比較高

3.從本質上講,Memcached只是一個單一key-value記憶體Cache;而Redis則是一個數據結構記憶體資料庫,支援五種資料型別,因此Redis除單純快取作用外,還可以處理一些簡單的邏輯運算,Redis不僅可以快取,而且還可以作為資料庫用

4.新版本(3.0)的Redis是指叢集分散式,也就是說叢集本身均衡客戶端請求,各個節點可以交流,可拓展行、可維護性更強大。

5. MongoDB不支援事務。