1. 程式人生 > >Memcache和Redis區別

Memcache和Redis區別

1、 Redis和Memcache都是將資料存放在記憶體中,都是記憶體資料庫。不過memcache還可用於快取其他東西,例如圖片、視訊等等。 2、Redis不僅僅支援簡單的k/v型別的資料,同時還提供list,set,hash等資料結構的存儲。 3、虛擬記憶體--Redis當實體記憶體用完時,可以將一些很久沒用到的value 交換到磁碟 4、過期策略--memcache在set時就指定,例如set key1 0 0 8,即永不過期。Redis可以通過例如expire 設定,例如expire name 10 5、分散式--設定memcache叢集,利用magent做一主多從;redis可以做一主多從。都可以一主一從 6、儲存資料安全--memcache掛掉後,資料沒了;redis可以定期儲存到磁碟(持久化) 7、災難恢復--memcache掛掉後,資料不可恢復; redis資料丟失後可以通過aof恢復

memcache官方定義

Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.

redis官方定義
Redis is an open source, BSD licensed, advanced key-value store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets and sorted sets.

版權相同

它們都是使用的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程序

參考

http://my.oschina.net/seava/blog/228519

http://www.cnblogs.com/qunshu/p/3196972.html

http://www.blogjava.net/chhbjh/archive/2012/02/21/370472.html

http://maoyidao.iteye.com/blog/1846089

Memcache基礎教程 http://www.ccvita.com/259.html

redis;mongodb;memcache三者的效能比較  http://www.cnblogs.com/see7di/p/3785766.html