NOSQL學習之一: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不支持事務。

 

 

參考:

Memcache,Redis,MongoDB(數據緩存系統)方案對比與分析

緩存技術PK:選擇Memcached還是Redis?

Redis與Memcached的區別

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM