基於redis構建系統的經驗和教訓

來源:互聯網
上載者:User

標籤:

Redis是一個非常快速和強大的儲存(持久化)系統,它最大的特點是支援豐富的資料結構。

由於Redis本身的限制,它所能處理的資料必須完全放在記憶體中,而硬碟上的資料是記憶體資料的一個鏡像,所以,限制了它的容量不能超過記憶體的容量。當前伺服器記憶體以32G為普遍情況,96G算較好,如果一個系統要儲存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適合在資料規模較小,效能要求較高的條件下應用。

基於redis構建系統的經驗和教訓

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.