Memcached,Redis,MongoDB(資料快取系統)方案分析與對比
阿新 • • 發佈:2018-12-30
一、問題
每次查詢的資料量極大,需要讓伺服器更加快速地響應使用者的請求。
二、解決方案
1. 通過高速伺服器Cache快取資料庫資料
2. 記憶體資料庫
三、主流Cache和資料庫對比
普通關係資料庫 mysql
記憶體資料庫 redis
nosql資料庫 mongodb
記憶體cache memcached
mongodb作為非關係型資料庫更適合海量資料的查詢,不適合單為快取服務,普通關係型資料庫無法滿足在大資料量查詢的情況下仍保持高效的查詢速度,故此redis,memcached是比較適合的解決方案。
四、Memcached
一個高效能的分散式記憶體物件快取系統,使用者動態Web應用減輕資料庫負載。通過在記憶體中快取資料和物件來減少對資料庫訪問的次數,從而提升網站訪問的速度。
Memcached的分散式不是在伺服器端實現的,而是在客戶端應用中實現的,即通過內建算法制定目標資料的節點。
五、Redis
Redis是一個key-value儲存資料庫,和Memcached類似,支援的型別更多
Redis作為一個高效能的key-value資料庫具有以下特徵:-
- 多樣的資料模型
- 持久化
- 主從同步
六、結論 應該說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:適用於對讀寫效率要求都很高,資料處理業務複雜和對安全性要求較高的系統(如新浪微博的計數和微博釋出部分系統,對資料安全性、讀寫要求都很高)。 七、需要慎重考慮的部分
ehcache參考:http://www.open-open.com/lib/view/open1322892011546.html