Redis是一個很是快速和強大的存儲(持久化)系統,它最大的特色是支持豐富的數據結構。redis
因爲Redis自己的限制,它所能處理的數據必須徹底放在內存中,而硬盤上的數據是內存數據的一個鏡像,因此限制了它的容量不能超過內存的容量。當前服務器內存以32G爲廣泛狀況,若是一個系統要存儲1T的數據,那麼必須用上10臺服務器,硬件成本很是高。對於一個100萬活躍用戶的系統,平均每人天天產生1K數據,便須要1G的存儲空間,這僅至關於每一個用戶天天只發10條微博或者10條聊天信息,真正流行的系統將遠遠超過這個數據規模。服務器
通常數據達到幾百M或者1G時,redis必須且只能開啓aof操做日誌異步寫硬盤的持久化模式,因爲用戶記錄數據變動日誌的aof文件體積增長比較嚴重,必須按期對aof文件進行收縮(rewrite)。收縮的過程實際上是將內存數據鏡像到硬盤的過程,redis主進程須要fork一個進程出來,雖然操做系統有寫時拷貝功能,但仍然要爲fork出來的進程保留足夠的內存空間,因此redis只能使用內存容量的50%。在寫aof文件時,redis徹底沒有任何速度控制策略,常常致使硬盤讀寫佔滿,其它進程一旦涉及到文件操做,都將被阻塞住。網絡
redis自身支持主從模式,能夠方便的進行數據備份,避免單點失敗形成數據丟失,可是當網絡出現抖動時,能夠致使主從之間發生一次全量複製,這對網絡帶寬是一個打擊。redis是一個單機的存儲方案,當數據超過單臺服務器的內存容量時,必須由軟件的設計者在軟件邏輯層設計出一套數據拆分的方案。
數據結構
結論:異步
redis不適合做爲海量數據存儲方案。redis適合在數據規模較小,性能要求較高的條件下應用。性能