一、幾種緩存系統簡介:
(1)redis︰是內存型數據庫,數據保存在內存中,通過tcp直接存取,優勢是讀寫性能高。redis是內存型KV數據庫(鍵值存儲數據庫,其數據按照鍵值對的形勢進行組織、索引、存儲),不支持二級索引,支持list,set等多種數據格式。適合存儲全局變量,適合讀多寫少的業務場景。很適合做緩存。
(2)mongodb︰是文檔型的非關系型數據庫,使用bson結構。其優勢在於查詢功能比較強大,能存儲海量數據,缺點是比較消耗內存。一般可以用來存放評論等半結構化數據,支持二級索引。 適合存儲json類型數據,不經常變化。
(3)memcached︰是一個高性能的分布式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提供動態、數據庫驅動網站的速度。Memcached基於一個存儲鍵/值對的hashmap。
二、優缺點總結:
Redis的優點:
①支持多種數據結構,如 string(字符串)、 list(雙向鏈表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基數估算)
②支持持久化操作,可以進行aof及rdb數據持久化到磁盤,從而進行數據備份或數據恢復等操作,較好的防止數據丟失的手段
③支持災難恢復,主從復制。主機會自動將數據同步到從機,可以進行讀寫分離。
④支持pub/sub消息訂閱機制,可以用來進行消息訂閱與通知。
Redis的缺點:
①redis不支持自動容錯和恢復功能,主從當機都會導致前端讀寫失敗,需手動前端Ip或者機器重新啟動
②主機宕機,主從數據復制過程中,數據未完全復制到從機。會出現數據不一致。
③redis較難支持在線擴容,當集群數據達到上限在線擴容變得復雜。
④Redis只能使用單線程,性能受限於CPU性能,故單實例CPU最高才可能達到5-6wQPS每秒。
⑤Redis在string類型上會消耗較多內存,可以使用dict(hash表)壓縮存儲以降低內存耗用。
⑥支持簡單的事務需求,但業界使用場景很少,並不成熟。
Mongodb的優點:
①文檔結構的存儲方式,能夠更便捷的獲取數據。
②內置GridFS,支持大容量的存儲。
③內置Sharding,分片簡單。
④海量數據下,性能優越。
⑤支持自動故障恢復(復制集)。
Mongodb的缺點:
①不支持事務操作。
②占用空間過大。
③mongodb沒有如MySQL那樣成熟的維護工具。
④無法進行關聯表查詢,不適用於關系多的數據。
⑤復雜聚合操作通過mapreduce創建,速度慢。
⑥ 模式自由, 自由靈活的文件存儲格式帶來的數據錯誤。
Memcached的優點:
①使用多台memcache服務器,可以均衡請求,避免所有請求都沖進一台memcache服務器,導致服務器掛掉。
②一台memcache服務器的容量畢竟有限,可以使用多台memcache服務器,增加緩存容量。
③利用memcache分布式特性。
④Memcached可以利用多核優勢,單實例吞吐量極高,可以達到幾十萬QPS。
Memcached的缺點:
①無法進行持久化,數據不能備份,只能用於緩存使用,且重啟后數據全部丟失。
②存儲數據有限制:1M,大於1M,認為就行分割,成為內存碎片。
③只支持簡單的key/value數據結構,不像Redis可以支持豐富的數據類型。
④無法進行數據同步,不能將MC中的數據遷移到其他MC實例中。
⑤內存回收不能及時,惰性刪除
三、各自的應用場景比較
-
-
Mongodb︰日志記錄、內容管理或者博客平台,比如評論系統。
-