- 從程序員到架構師:大數據量、緩存、高并發、微服務、多團隊協同等核心場景實戰
- 王偉杰編著
- 589字
- 2022-06-17 17:04:22
4.2 緩存中間件技術選型(Memcached,MongoDB,Redis)
先將目前比較流行的緩存中間件Memcached、MongoDB、Redis進行簡單對比,見表4-1。
表4-1 緩存中間件對比

使用MongoDB的公司最少,因為它只是一個數據庫,由于它的讀寫速度與其他數據庫相比更快,人們才把它當作類似緩存的存儲。
所以接下來就是比較Redis和Memcached,并從中做出選擇。
目前,Redis比Memcached更流行,這里總結一下原因,共3點。
(1)數據結構
舉個例子,在使用Memcached保存List緩存對象的過程中,如果往List中增加一條數據,則首先需要讀取整個List,再反序列化塞入數據,接著再序列化存儲回Memcached。而對于Redis而言,這僅僅是一個Redis請求,它會直接幫助塞入數據并存儲,簡單快捷。
(2)持久化
對于Memcached來說,一旦系統宕機數據就會丟失。因為Memcached的設計初衷就是一個純內存緩存。
通過Memcached的官方文檔得知,1.5.18版本以后的Memcached支持Restartable Cache(可重啟緩存),其實現原理是重啟時CLI先發信號給守護進程,然后守護進程將內存持久化至一個文件中,系統重啟時再從那個文件中恢復數據。不過,這個設計僅在正常重啟情況下使用,意外情況還是不處理。
而Redis是有持久化功能的。
(3)集群
這點尤為重要。Memcached的集群設計非常簡單,客戶端根據Hash值直接判斷存取的Memcached節點。而Redis的集群因在高可用、主從、冗余、Failover等方面都有所考慮,所以集群設計相對復雜些,屬于較常規的分布式高可用架構。
因此,經過一番慎重的思考,項目組最終決定使用Redis作為緩存的中間件。
技術選型完成后,開始考慮緩存的一些具體問題,先從緩存何時存儲數據入手。
- The DevOps 2.3 Toolkit
- Learn Type:Driven Development
- Visual FoxPro程序設計教程
- Vue.js 2 and Bootstrap 4 Web Development
- 編程卓越之道(卷3):軟件工程化
- MongoDB for Java Developers
- Arduino開發實戰指南:LabVIEW卷
- Python測試開發入門與實踐
- Java從入門到精通(第4版)
- NumPy Essentials
- Windows Server 2012 Unified Remote Access Planning and Deployment
- Visual C++應用開發
- Python漫游數學王國:高等數學、線性代數、數理統計及運籌學
- 智能搜索和推薦系統:原理、算法與應用
- Node.js 12實戰