红姐单双报

你好,歡迎來到js代碼網。

微信登錄

首頁>編程語言> Memcached與Redis的區別和選擇

Memcached與Redis的區別和選擇

  • 分類:編程語言
  • 時間:02-19
  • 閱讀:1354

一、Memcached簡介

Memcached是一個自由開源的,高性能,分布式內存對象緩存系統。

Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric為首開發的一款軟件。現在已成為mixi、hatena、Facebook、Vox、LiveJournal等眾多服務中提高Web應用擴展性的重要因素。

Memcached是一種基于內存的key-value存儲,用來存儲小塊的任意數據(字符串、對象)。這些數據可以是數據庫調用、API調用或者是頁面渲染的結果。

Memcached簡潔而強大。它的簡潔設計便于快速開發,減輕開發難度,解決了大數據量緩存的很多問題。它的API兼容大部分流行的開發語言。

本質上,它是一個簡潔的key-value存儲系統。

一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態Web應用的速度、提高可擴展性。



二、Redis簡介

Redis 是完全開源免費的,遵守BSD協議,是一個高性能的key-value數據庫。

Redis 與其他 key - value 緩存產品有以下三個特點:
1、Redis支持數據的持久化,可以將內存中的數據保存在磁盤中,重啟的時候可以再次加載進行使用。
2、Redis不僅僅支持簡單的key-value類型的數據,同時還提供list,set,zset,hash等數據結構的存儲。
3、Redis支持數據的備份,即master-slave模式的數據備份。

Redis 優勢
1、性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
2、豐富的數據類型 – Redis支持二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 數據類型操作。
3、原子 – Redis的所有操作都是原子性的,意思就是要么成功執行要么失敗完全不執行。單個操作是原子性的。多個操作也支持事務,即原子性,通過MULTI和EXEC指令包起來。
4、豐富的特性 – Redis還支持 publish/subscribe, 通知, key 過期等等特性。

Redis與其他key-value存儲有什么不同?
Redis有著更為復雜的數據結構并且提供對他們的原子性操作,這是一個不同于其他數據庫的進化路徑。Redis的數據類型都是基于基本數據結構的同時對程序員透明,無需進行額外的抽象。
Redis運行在內存中但是可以持久化到磁盤,所以在對不同數據集進行高速讀寫時需要權衡內存,因為數據量不能大于硬件內存。在內存數據庫方面的另一個優點是,相比在磁盤上相同的復雜的數據結構,在內存中操作起來非常簡單,這樣Redis可以做很多內部復雜性很強的事情。同時,在磁盤格式方面他們是緊湊的以追加的方式產生的,因為他們并不需要進行隨機訪問。


三、Memcached與Redis的區別和選擇

由于Redis只使用單核,而Memcached可以使用多核,所以在比較上,平均每一個核上Redis在存儲小數據時比Memcached性能更高。而在100k以上的數據中,Memcached性能要高于Redis,雖然Redis最近也在存儲大數據的性能上進行優化,但是比起Memcached,還是稍有遜色。說了這么多,結論是,無論你使用哪一個,每秒處理請求的次數都不會成為瓶頸。

你需要關注內存使用率。對于key-value這樣簡單的數據儲存,Memcached的內存使用率更高。如果采用hash結構,Redis的內存使用率會更高。當然,這些都依賴于具體的應用場景。

你需要關注關注數據持久化和主從復制時,只有Redis擁有這兩個特性。如果你的目標是構建一個緩存在升級或者重啟后之前的數據不會丟失的話,那也只能選擇Redis。

你應該關心你需要的操作。Redis支持很多復雜的操作,甚至只考慮內存的使用情況,在一個單一操作里你常常可以做很多,而不需要將數據讀取到客戶端中(這樣會需要很多的IO操作)。這些復雜的操作基本上和純GET和POST操作一樣快,所以你不只是需要GET/SET而是更多的操作時,Redis會起很大的作用。

對于兩者的選擇還是要看具體的應用場景,如果需要緩存的數據只是key-value這樣簡單的結構時,我在項目里還是采用Memcached,它也足夠的穩定可靠。如果涉及到存儲,排序等一系列復雜的操作時,毫無疑問選擇Redis。

四、關于Redis和Memcached的不同,主要有以下幾點:

1、存儲方式:
Memcached 把數據全部存在內存之中,斷電后會掛掉,數據不能超過內存大小
Redis有部份存在硬盤上,這樣能保證數據的持久性,支持數據的持久化(筆者注:有快照和AOF日志兩種持久化方式,在實際應用的時候,要特別注意配置文件快照參數,要不就很有可能服務器頻繁滿載做dump)。

2、數據支持類型:
Redis在數據支持上要比Memcached多的多。

3、使用底層模型不同:
新版本的Redis直接自己構建了VM 機制 ,因為一般的系統調用系統函數的話,會浪費一定的時間去移動和請求。

4、運行環境不同:
Redis目前官方只支持LINUX 上去行,從而省去了對于其它系統的支持,這樣的話可以更好的把精力用于本系統 環境上的優化,雖然后來微軟有一個小組為其寫了補丁。但是沒有放到主干上

五、總結

個人總結一下,有持久化需求或者對數據結構和處理有高級要求的應用,選擇Redis,其他簡單的key/value存儲,選擇Memcached。


六、Redis相關視頻教程推薦

http://www.eahuy.tw/Index/search.html?cate=%E8%A7%86%E9%A2%91%E6%95%99%E7%A8%8B&title=Redis


相關文章

红姐单双报 网络捕鱼刷分 跪求真实网上赚钱 比滴滴还赚钱 怎么斗牛牛 360时时彩 动物更赚钱的 大象时时彩网页版 河南快3历史开奖结果 网上理财技巧 51计划网pk10计划稳定免费 真人投注网 决战卡五星必赢神器 大赢家比分直播∨90 澳门星际博招聘日 11选5走势图 百度类的赚钱软件