HBase和Redis的功能上比較相似。都是nosql類型的數據庫。但是在適用場景上,兩者還是有比較明顯的區別的。
下面基於讀寫性能、數據類型、數據量、部署難易、數據可靠性、應用場景、兩者的結合等多個維度來比較一下兩者。
讀寫性能:
HBase寫快讀慢,HBase的讀取時長通常是幾毫秒,而Redis的讀取時長通常是幾十微秒。性能相差非常大。
數據類型:
HBase和Redis都支持KV類型。但是Redis支持List、Set等更豐富的類型。
數據量:
Redis支持的數據量通常受內存限制,而HBase沒有這個限制,可以存儲遠超內存大小的數據。
部署難易:
HBase部署需要依賴hadoop、zookeeper等服務,而Redis的部署非常簡單。
數據可靠性:
HBase採用WAL,先記錄日誌再寫入數據,理論上不會丟失數據。而Redis採用的是異步複製數據,在failover時可能會丟失數據。
應用場景:
HBase適合做大數據的持久存儲,而Redis比較適合做緩存。如果數據丟失是不能容忍的,那就用只能用HBase;如果需要一個高性能的環境,而且能夠容忍一定的數據丟失,那完全可以考慮使用Redis。
兩者的結合:
HBase可以用來做數據的固化,也就是數據存儲,做這個他非常合適。Redis適合做cache。可以用HBase+Redis實現數據倉庫加緩存數據庫,速度和擴展性都兼顧。
綜合上述比較,我們可以看出。這兩者都有各自擅長的領域,不存在相互替代。具體選用哪個服務,要根據具體業務場景、數據量選擇最合適的方案。