Memcached,Redis,MongoDB(資料緩衝系統)方案分析與對比

來源:互聯網
上載者:User

一、問題

每次查詢的資料量極大,需要讓伺服器更加快速地響應使用者的請求。

二、解決方案

       1.  通過高速伺服器Cache快取資料庫資料

       2. 記憶體資料庫

三、主流Cache和資料庫對比

普通關聯式資料庫 mysql

記憶體資料庫 redis

nosql資料庫 mongodb

記憶體cache memcached

        mongodb作為非關係型資料庫更適合海量資料的查詢,不適合單為快取服務,普通關係型資料庫無法滿足在大資料量查詢的情況下仍保持高效的查詢速度,故此redis,memcached是比較適合的解決方案。

四、Memcached

一個高效能的分布式記憶體對象緩衝系統,使用者動態Web應用減輕資料庫負載。通過在記憶體中快取資料和對象來減少對資料庫訪問的次數,從而提升網站訪問的速度。

 Memcached的分布式不是在伺服器端實現的,而是在用戶端應用中實現的,即通過內建演算法制定目標資料的節點。

五、Redis

Redis是一個key-value儲存資料庫,和Memcached類似,支援的類型更多

 Redis作為一個高效能的key-value資料庫具有以下特徵:  多樣的資料模型  持久化  主從同步        Redis支援豐富的資料類型,最為常用的資料類型主要由五種:String、Hash、List、Set和Sorted Set。Redis通常將資料存放區於記憶體中,或被配置為使用虛擬記憶體。 Redis有一個很重要的特點就是它可以實現持久化資料,通過兩種方式可以實現資料持久化:使用RDB快照的方式,將記憶體中的資料不斷寫入磁碟;或使用類似MySQL 的AOF日誌方式,記錄每次更新的日誌。前者效能較高,但是可能會引起一定程度的資料丟失;後者相反。 Redis支援將資料同步到多台從資料庫上,這種特性對提高 讀取效能非常有益。 3.0 以後的版本:相較於Memcached只能採用用戶端實現分布式儲存,Redis則在伺服器端構建分布式儲存。Redis Cluster是一個實現了分布式且允許單點故障的 Redis進階版本,它沒有中心節點,各個節點地位一致,具有線性可伸縮的功能。如圖給出Redis Cluster的分布式儲存架構,其中節點與節點之間通過二進位協議進行 通訊,節點與用戶端之間通過ascii協議進行通訊。在資料的放置策略上,Redis Cluster將整個 key的數範圍分成 16384 個雜湊槽,每個節點上可以儲存一個或多個雜湊 槽,也就是說當前Redis Cluster支援的最大節點數就是 16384
六、結論 應該說Memcached和Redis都能很好的滿足解決我們的問題,它們效能都很高,總的來說,可以把Redis理解為是對Memcached的拓展,是更加重量級的實現,提供了更多 更強大的功能。具體來說:
1.效能上:      效能上都很出色,具體到細節,由於Redis只使用單核,而Memcached可以使用多核,所以平均每一個核上Redis在儲存小資料時比 Memcached效能更高。而在100k以上的資料中,Memcached效能要高於Redis,雖然Redis最近也在儲存大資料的效能上進行最佳化,但是比起 Memcached,還是稍有遜色。 2.記憶體空間和資料量大小:      MemCached可以修改最大記憶體,採用LRU演算法。Redis增加了VM的特性,突破了實體記憶體的限制。 3.操作便利上:      MemCached資料結構單一,僅用來快取資料,而Redis支援更加豐富的資料類型,也可以在伺服器端直接對資料進行豐富的操作,這樣可以減少網路IO次數和資料體積。 4.可靠性上:      MemCached不支援資料持久化,斷電或重啟後資料消失,但其穩定性是有保證的。Redis支援資料持久化和資料恢複,允許單點故障,但是同時也會付出效能的代價。 5.應用情境:      Memcached:動態系統中減輕資料庫負載,提升效能;做緩衝,適合多讀少寫,大資料量的情況(如人人網大量查詢使用者資訊、好友資訊、文章資訊等)。      Redis:適用於對讀寫效率要求都很高,資料處理業務複雜和對安全性要求較高的系統(如新浪微博的計數和微博發布部分系統,對資料安全性、讀寫要求都很高)。 七、需要謹慎考慮的部分 1.Memcached單個key-value大小有限,一個value最大隻支援1MB,而Redis最大支援512MB 2.Memcached只是個記憶體緩衝,對可靠性無要求;而Redis更傾向於記憶體資料庫,因此對對可靠性方面要求比較高 3.從本質上講,Memcached只是一個單一key-value記憶體Cache;而Redis則是一個資料結構記憶體資料庫,支援五種資料類型,因此Redis除單純緩衝作用外,還可以處 理一些簡單的邏輯運算,Redis不僅可以緩衝,而且還可以作為資料庫用 4.新版本(3.0)的Redis是指叢集分布式,也就是說叢集本身均衡用戶端請求,各個節點可以交流,可拓展行、可維護性更強大。 來自:http://blog.csdn.net/suifeng3051/article/details/23739295
ehcache參考:http://www.open-open.com/lib/view/open1322892011546.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.