Redis 與 Memcache

 

最近,我們看到許多使用Redis的案例,尤其是大型及先進的系統中應用的更多。事實上,我們正管理着一個新的規模龐大的Redis集羣,設計該架構是爲了每秒能處理上百萬個事務。然而,Redis與Memcache有許多類似的地方,都是基於網絡的、運行於內存的、用來儲存key value數據的存儲器,所以通常被用來緩存許多信息,包括像PHP會話及數據庫數據等。但Redis比Memcache要好,原因如下:

Redis最主要的特點是比較穩定,或者說它可將數據存儲在物理磁盤上而不是虛擬內存中。這就解決了Memcache所面臨的第一個問題:Memcache在損壞或重啓時會丟失全部數據。這樣,Redis便可用在包含許多服務器的大型系統中,而不會意外丟失數據。通過簡單的快照或日誌便可保證Redis的持續服務性。但是MemCache則會因爲各種各樣的一些小問題而受到影響,比如高內存佔用率。

Redis還有另外一個有趣的獨有的特點:就是數據複製。它允許您建立主-從系統,當主系統癱瘓後,您可在從系統上恢復功能。這也使得您可在從系統上讀取數據,從而得到更高的性能,甚至可以在另外一個地理位置的獨立數據中心中的分佈式從系統上讀取。

最後,Redis的功能遠比Memcache要多的多,它支持集、列表及更高級的數據組。此外,它擁有許多功能可以處理系統中的數據。它支持某些特定事務及樂觀鎖定機制,最近發佈的2.6版本還支持Lua腳本。

然而,Redis也不是盡善盡美的。最主要的問題就是不支持直接集羣,在Memcache中,您可以列出3個服務器進行library分配,甚至可以使用統一的哈希函數,當某個服務器癱瘓時,數據可以一致地遷移出去。幸運的是,Redis團隊正在攻關這一技術,準備在下一版本中將該特點融入進來。

另一個重要的明顯區別是,Memcache支持多線程而Redis不支持多線程。因爲Redis只採用單一內核,所以必須同時處理許多實例,甚至達到每秒要處理1百萬個請求。這將給Redis的配置、管理及監控帶來挑戰。

總的來說,我們看到Redis前進了一大步,尤其是當集羣還沒有那麼重要的時候。Redis比Memcache更強大,存儲數據更可靠,並且很可能是“key-value ”存儲的未來 。

 

       (Authored by Steve Mushero / ChinaNetCloud CEO & CTO  本博客英文原文請點此查看
發佈了65 篇原創文章 · 獲贊 5 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章