Memcache和redis的區別是什麼?
版權相同
它們都是使用的 它們都是使用的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有部份存在硬盤上,這樣能保證數據的持久性。 有部份存在硬盤上,這樣能保證數據的持久性。