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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章