Redis 與 Memcache


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

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  本博客英文原文請點此查看
分佈式

相關文章
相關標籤/搜索