關於Redis和Memcache在應用中,都可以實現緩存的功能,但是,具體使用情況需要根據具體業務場景,尤其是對緩存數據有特性要求時,需要選擇對應的緩存機制。 共同點: 都是基於記憶體的資料庫,可用作緩存機制 區別: 1、關於數據類型:Memcache只支持簡單的Key/Value數據結構;Redis ...
關於Redis和Memcache在應用中,都可以實現緩存的功能,但是,具體使用情況需要根據具體業務場景,尤其是對緩存數據有特性要求時,需要選擇對應的緩存機制。
共同點:
都是基於記憶體的資料庫,可用作緩存機制
區別:
1、關於數據類型:Memcache只支持簡單的Key/Value數據結構;Redis支持的數據結構相對較多,如String、List、Set、zSet等。
2、是否支持持久化數據:Memcache數據存放在記憶體中,無法持久化,在重啟後數據丟失;Redis可實現數據持久化到硬碟(RDB)或記錄操作日誌(AOF),在重啟後可以實現數據恢復功能。
3、關於對集群的支持:Memcache通過Hash演算法,在客戶端做集群支持;Redis淘工作Reolication進行數據複製,支持master-slave機制,實現的事基於服務端的集群支持。
4、關於性能:由於寫入都是直接到記憶體,差別不會太大,但是在讀操作上,如果數據量相對較大,Memcache相對可能更強(只是個人猜測,未進行驗證測試)。
5、線程問題:Memcache是多線程模型,主線程和work線程分開,前者負責監聽請求,並將具體的執行處理交給work線程;Redis單線程,串列執行,併發情況下數據一致性有保障。
在項目具體應用中,前期嘗試過Memcache實現緩存,但後期還是決定選用Redis,原因是項目背景是微服務模式,Redis實現session共用以及基礎數據緩存相對更加有優勢。