Redis和Memcache的區(qū)別總結(jié)
總結(jié)一:
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.
版權(quán)相同
它們都是使用的bsd協(xié)議,使用它的項(xiàng)目可以用于商業(yè)用戶,不必發(fā)布二次修改的代碼,可以修改源代碼。
數(shù)據(jù)類型
redis數(shù)據(jù)類型豐富,支持set liset等類型
memcache支持簡單數(shù)據(jù)類型,需要客戶端自己處理復(fù)雜對(duì)象
持久性
redis支持?jǐn)?shù)據(jù)落地持久化存儲(chǔ)
memcache不支持?jǐn)?shù)據(jù)持久存儲(chǔ)
分布式存儲(chǔ)
redis支持master-slave復(fù)制模式
memcache可以使用一致性hash做分布式
value大小不同
memcache是一個(gè)內(nèi)存緩存,key的長度小于250字符,單個(gè)item存儲(chǔ)要小于1M,不適合虛擬機(jī)使用
數(shù)據(jù)一致性不同
redis使用的是單線程模型,保證了數(shù)據(jù)按順序提交。
memcache需要使用cas保證數(shù)據(jù)一致性。CAS(Check and Set)是一個(gè)確保并發(fā)一致性的機(jī)制,屬于“樂觀鎖”范疇;原理很簡單:拿版本號(hào),操作,對(duì)比版本號(hào),如果一致就操作,不一致就放棄任何操作
cpu利用
redis單線程模型只能使用一個(gè)cpu,可以開啟多個(gè)redis進(jìn)程
總結(jié)二:
1.Redis中,并不是所有的數(shù)據(jù)都一直存儲(chǔ)在內(nèi)存中的,這是和Memcached相比一個(gè)最大的區(qū)別。
2.Redis不僅僅支持簡單的k/v類型的數(shù)據(jù),同時(shí)還提供list,set,hash等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)。
3.Redis支持?jǐn)?shù)據(jù)的備份,即master-slave模式的數(shù)據(jù)備份。
4.Redis支持?jǐn)?shù)據(jù)的持久化,可以將內(nèi)存中的數(shù)據(jù)保持在磁盤中,重啟的時(shí)候可以再次加載進(jìn)行使用。
我個(gè)人認(rèn)為最本質(zhì)的不同是Redis在很多方面具備數(shù)據(jù)庫的特征,或者說就是一個(gè)數(shù)據(jù)庫系統(tǒng),而Memcached只是簡單的K/V緩存
總結(jié)三:
redis和memecache的不同在于:
1、存儲(chǔ)方式:
memecache 把數(shù)據(jù)全部存在內(nèi)存之中,斷電后會(huì)掛掉,數(shù)據(jù)不能超過內(nèi)存大小
redis有部份存在硬盤上,這樣能保證數(shù)據(jù)的持久性。
2、數(shù)據(jù)支持類型:
redis在數(shù)據(jù)支持上要比memecache多的多。
3、使用底層模型不同:
新版本的redis直接自己構(gòu)建了VM 機(jī)制 ,因?yàn)橐话愕南到y(tǒng)調(diào)用系統(tǒng)函數(shù)的話,會(huì)浪費(fèi)一定的時(shí)間去移動(dòng)和請(qǐng)求。
4、運(yùn)行環(huán)境不同:
redis目前官方只支持LINUX 上去行,從而省去了對(duì)于其它系統(tǒng)的支持,這樣的話可以更好的把精力用于本系統(tǒng) 環(huán)境上的優(yōu)化,雖然后來微軟有一個(gè)小組為其寫了補(bǔ)丁。但是沒有放到主干上
memcache只能當(dāng)做緩存,cache
redis的內(nèi)容是可以落地的,就是說跟mongodb有些類似,然后redis也可以作為緩存,并且可以設(shè)置master-slave
相關(guān)文章
SQL語句優(yōu)化之JOIN和LEFT JOIN 和 RIGHT JOIN語句的優(yōu)化
在數(shù)據(jù)庫的應(yīng)用中,我們經(jīng)常需要對(duì)數(shù)據(jù)庫進(jìn)行多表查詢,然而當(dāng)數(shù)據(jù)量非常大時(shí)多表查詢會(huì)對(duì)執(zhí)行效率產(chǎn)生非常大的影響,因此我們?cè)谑褂肑OIN和LEFT JOIN 和 RIGHT JOIN語句時(shí)要特別注意2018-03-03dataGrip顯示clickhouse時(shí)間字段不正確的問題
最近做數(shù)據(jù)遷移碰到一個(gè)問題,源數(shù)據(jù)和目的端數(shù)據(jù),導(dǎo)入的時(shí)間怎么都差8個(gè)小時(shí),本文就來介紹一下如何解決,感興趣的可以了解一下2021-09-09解決Navicat Premium 12連接Oracle時(shí)提示oracle library is not loaded的
這篇文章主要介紹了解決Navicat Premium 12連接Oracle時(shí)提示oracle library is not loaded的問題,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12時(shí)序數(shù)據(jù)庫TDengine寫入查詢的問題分析
最近TDengine很火,本人也一直很早就有關(guān)注,其官方給出的測(cè)試性能結(jié)果很喜人,所以一開源,本人就進(jìn)行了相關(guān)調(diào)研,最終發(fā)現(xiàn)還是存在著一定的問題,期待后續(xù)的完善吧2022-03-03SQL SERVER 與ACCESS、EXCEL的數(shù)據(jù)轉(zhuǎn)換
SQL SERVER 與ACCESS、EXCEL的數(shù)據(jù)轉(zhuǎn)換...2007-02-02RBAC權(quán)限模型_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了RBAC權(quán)限模型,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08postgresql 按小時(shí)分表(含觸發(fā)器)的實(shí)現(xiàn)方式
這篇文章主要介紹了postgresql 按小時(shí)分表(含觸發(fā)器)的實(shí)現(xiàn)方式,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-01-01