redis和memcache比較優缺點
版權相同
它們都是使用的bsd協議,使用它的專案可以用於商業使用者,不必釋出二次修改的程式碼,可以修改原始碼。
資料型別
redis資料型別豐富,支援set liset等型別
memcache支援簡單資料型別,需要客戶端自己處理複雜物件
永續性
redis支援資料落地持久化儲存
memcache不支援資料持久儲存
分散式儲存
redis支援master-slave複製模式
memcache可以使用一致性hash做分散式
value大小不同
memcache是一個記憶體快取,key的長度小於250字元,單個item儲存要小於1M,不適合虛擬機器使用
資料一致性不同
redis使用的是單執行緒模型,保證了資料按順序提交。
memcache需要使用cas保證資料一致性。CAS(Check and Set)是一個確保併發一致性的機制,屬於“樂觀鎖”範疇;原理很簡單:拿版本號,操作,對比版本號,如果一致就操作,不一致就放棄任何操作
cpu利用
redis單執行緒模型只能使用一個cpu,可以開啟多個redis程序
總結二:
1.Redis中,並不是所有的資料都一直儲存在記憶體中的,這是和Memcached相比一個最大的區別。
2.Redis不僅僅支援簡單的k/v型別的資料,同時還提供list,set,hash等資料結構的儲存。
3.Redis支援資料的備份,即master-slave模式的資料備份。
4.Redis支援資料的持久化,可以將記憶體中的資料保持在磁碟中,重啟的時候可以再次載入進行使用。
我個人認為最本質的不同是Redis在很多方面具備資料庫的特徵,或者說就是一個數據庫系統,而Memcached只是簡單的K/V快取
總結三:
redis和memecache的不同在於:
1、儲存方式:
memecache 把資料全部存在記憶體之中,斷電後會掛掉,資料不能超過記憶體大小
redis有部份存在硬碟上,這樣能保證資料的永續性(筆者注:有快照和AOF日誌兩種持久化方式,在實際應用的時候,要特別注意配置檔案快照引數,要不就很有可能伺服器頻繁滿載做dump)。
2、資料支援型別:
redis在資料支援上要比memecache多的多。
3、使用底層模型不同:
新版本的redis直接自己構建了VM 機制 ,因為一般的系統呼叫系統函式的話,會浪費一定的時間去移動和請求。
4、執行環境不同:
redis目前官方只支援LINUX 上去行,從而省去了對於其它系統的支援,這樣的話可以更好的把精力用於本系統 環境上的優化,雖然後來微軟有一個小組為其寫了補丁。但是沒有放到主幹上
memcache只能當做快取,cache
redis的內容是可以落地的,就是說跟mongodb有些類似,然後redis也可以作為快取,並且可以設定master-slave
參考:http://blog.csdn.net/tonysz126/article/details/8280696/