-
1 # IT老友
-
2 # 遷徙de麻雀
雖然都是nosql範疇,但是memcache、redis主要設計目的是做快取使用
mongodb的核心是提供無模式文件結構的持久化儲存,它的兩個核心點:提供接近(其實差距挺大的)快取伺服器的速度和接近關係資料庫API(這個已經差不多了,連線查詢是弱點)的介面。
memcache、redis如果是幾年前,memcache、redis之間還有選擇綜合症,目前的市場,你可以直接選擇redis,把精力完全放在redis身上去深入。
這是是市場反應,這個相信對你的選擇有絕對說服力。
memcache在效能方面沒有優勢了,同時redis提供了更豐富的資料結構,各種原子操作,以及持久化(RDB/AOF)。如果你是小規模專案,你甚至可以直接用它設計訊息訂閱,使用它的即時訊息訂閱釋出(你有訊息持久化需求的話可以額外用redis的列表功能等定製)。
mongodb相比redis和memcache,mongodb的效能差距就比較大了。mongodb最核心的是它提供的B樹索引,這個為我們提供了範圍查詢的基礎,4.0提供了事務後,才算真正可以勉強在某些場合替代關係資料庫。動態性和內嵌設計後的便利操作,很適合做中間資料管理。
PS:我最先使用mongodb,其實主要是用它做LBS應用。
結束如果你是中小專案,快取使用redis是很合理的選擇,mongodb可以暫不使用,mysql已經夠用。
如果是大專案,相信你們的架構師會根據你們的實際需求來合理規劃架構和選擇的。
-
3 # 波波說運維
redis、memcahce 比較相似,但與 mongodb 完全不同,幾乎沒有可比性。
總的來說 redis/memcache 是基於記憶體的,講究的是效能,多用作快取層,比如說存放session。而 mongodb 是面向文件的,儲存的是類似JSON的非結構化資料,查詢起來非常方便,開發效率高,比較類似傳統SQL關係型資料庫。
---------------
redis是記憶體型KV資料庫(鍵值儲存資料庫,其資料按照鍵值對的形勢進行組織、索引、儲存),不支援二級索引,支援list,set等多種資料格式。適合儲存全域性變數,適合讀多寫少的業務場景。很適合做快取。
------------------
Memcached 是一個高效能的分散式記憶體物件快取系統,用於動態Web應用以減輕資料庫負載。它透過在記憶體中快取資料和物件來減少讀取資料庫的次數,從而提供動態、資料庫驅動網站的速度。Memcached基於一個儲存鍵/值對的hashmap。
-------------------
mongodb則是文件型的非關係型資料庫,使用bson結構。其優勢在於查詢功能比較強大,能儲存海量資料,缺點是比較消耗記憶體。
回覆列表
mongodb是一款介於記憶體資料庫和關係資料庫的資料庫,是高效能、無模式的文件型資料庫。
mongodb資料儲存在磁碟,只有在需要時透過mmap對映到記憶體,在記憶體中修改,修改完畢由作業系統負責flush到磁碟。
優點:支援複雜的資料結構,能儲存海量的資料,能提供類似關係資料庫般強大的查詢。
redis是一個開源的key-value儲存系統,所有資料都是放在記憶體中的,持久化是使用RDB方式或者aof方式。僅支援key、string、hash、list、set幾種結構,優點:讀寫速度非常快。缺點:受記憶體限制無法儲存過多的資料,也無法提供強大的查詢,只使用單核。
memcache是一個高效能的分散式記憶體物件快取系統,用於動態Web應用以減輕資料庫負載。memcache僅支援簡單的key-value結構,但使用多核。
在爬蟲中,經常採用redis+mongodb的方式,Mongodb用於儲存爬取的海量的資料,而redis則用於去重和儲存待爬取的url。
redis V memcache:
1:Redis支援伺服器端的資料操作,而在Memcached裡,你需要將資料拿到客戶端來進行類似的修改再set回去;
2:使用簡單的key-value儲存的話,Memcached的記憶體利用率更高,而如果Redis採用hash結構來做key-value儲存,由於其組合式的壓縮,其記憶體利用率會高於Memcached;
3:由於Redis只使用單核,而Memcached可以使用多核,所以平均每一個核上Redis在儲存小資料時比Memcached效能更高。而在100k以上的資料中,Memcached效能要高於Redis;
4:Memcached單個key-value大小有限,一個value最大隻支援1MB,而Redis最大支援512MB;
5:Memcached只是一個單一key-value記憶體Cache,而Redis則是一個數據結構記憶體資料庫,支援五種資料型別
6:Memcached只能作為快取,Redis不僅可以快取,而且還可以作為資料庫用。
除了某些功能外,Redis可以視為Memcached的擴充套件。