Memcache、Redis和MongoDB的區別

一 擁有數據類型

Redis MongoDB Memcache
String 字符串。在 MongoDB 中,UTF-8 編碼的字符串纔是合法的。(一個value最大支持512MB) string 字符串。是redis最基本的類型,你可以理解成與Memcached一模一樣的類型,一個key對應一個value。 僅支持簡單的key-value結構的數據記錄(一個value最大隻支持1MB)
Integer 整型數值。根據你所採用的服務器,可分爲 32 位或 64 位。 hash 哈希。hash是一個string類型的field和value的映射表,hash特別適合用於存儲對象。
Boolean 布爾值。用於存儲布爾值(真/假)。 list 列表。Redis 列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)。
Double 雙精度浮點值。用於存儲浮點值。 set(集合)。et是string類型的無序集合。
Min/Max keys 將一個值與 BSON(二進制的 JSON)元素的最低值和最高值相對比。 are neat
Array 用於將數組或列表或多個值存儲爲一個鍵。 zset(sorted set:有序集合)
Timestamp 時間戳。記錄文檔修改或添加的具體時間。 are neat
Object 用於內嵌文檔。 NumberInt()
Null 用於創建空值。 Boolean
Symbol 符號。該數據類型基本上等同於字符串類型,但不同的是,它一般用於採用特殊符號類型的語言。 ISODate(),new Date()
Date 日期時間。用 UNIX 時間格式來存儲當前日期或時間。你可以指定自己的日期時間:創建 Date 對象,傳入年月日信息。
Object ID 對象 ID。用於創建文檔的 ID。
Binary Data 二進制數據。用於存儲二進制數據。
Code 代碼類型。用於在文檔中存儲 JavaScript 代碼。
Regular expression 正則表達式類型。用於存儲正則表達式。


二 性能對比

2.1 Memcached: 可以利用多核優勢,單實例吞吐量極高,可以達到幾十萬QPS(取決於key、value的字節大小以及服務器硬件性能,日常環境中QPS高峯大約在4-6w左右)。適用於最大程度扛量。而在100k以上的數據中,Memcached性能要高於Redis.
2.2 Redis: 由於Redis只使用單核,而Memcached可以使用多核,所以平均每一個核上Redis在存儲小數據時比Memcached性能更高。
2.3 Mongodb: Mongodb小於兩者性能, 前兩者性能差不多。

三 內存空間和數據量大小

3.1 MemCached:可以修改最大內存,採用LRU算法。
3.2 Redis:增加了VM的特性,突破了物理內存的限制。
3.3 MongoDB: 適合大數據量的存儲,依賴操作系統 VM 做內存管理,吃內存也比較厲害,服務不要和別的服務在一起。

四 操作便利

3.1 MemCached: 數據結構單一,僅用來緩存數據。
3.2 Redis: 支持更加豐富的數據類型,也可以在服務器端直接對數據進行豐富的操作,這樣可以減少網絡IO次數和數據體積。
3.3 Mongodb: 支持豐富的數據表達,索引,最類似關係型數據庫,支持的查詢語言非常豐富。

五 可靠性上

5.1 MemCached: 不支持數據持久化,斷電或重啓後數據消失,但其穩定性是有保證的。
5.2 Redis: 支持(快照、AOF),支持數據持久化和數據恢復,允許單點故障,但是同時也會付出性能的代價。
5.3 MongoDB: 從 1.8 版本開始採用 binlog 方式支持持久化的可靠性。

六 數據一致性(事務支持)

6.1 Memcache 在併發場景下,用cas保證一致性。
6.2 redis事務支持比較弱,只能保證事務中的每個操作連續執行。
6.3 mongoDB不支持事務。

七 數據分析

mongoDB:內置了數據分析的功能(mapreduce),其他不支持。

八 使用場景

8.1 Memcached:動態系統中減輕數據庫負載,提升性能;做緩存,適合多讀少寫,大數據量的情況(如人人網大量查詢用戶信息、好友信息、文章信息等)。
8.2 Redis:適用於對讀寫效率要求都很高,數據處理業務複雜和對安全性要求較高的系統(如新浪微博的計數和微博發佈部分系統,對數據安全性、讀寫要求都很高)。
8.3 MongoDB:主要解決海量數據的訪問效率問題。

參考文章:http://www.cnblogs.com/cac2020/p/6044536.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章