回覆列表
  • 1 # IT老友

    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的擴充套件。

  • 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結構。其優勢在於查詢功能比較強大,能儲存海量資料,缺點是比較消耗記憶體。

  • 中秋節和大豐收的關聯?
  • 談一談諸宮調、元曲、南曲、北曲、崑曲之間的關係?