分布式緩存Redis與Memcached的優(yōu)缺點(diǎn)區(qū)別比較
為什么Memcached和Redis如此流行? 不僅是其具有超高的性能,還因?yàn)橄鄬?duì)來說他們都非常簡(jiǎn)單。 對(duì)程序員來說上手使用Memcached或Redis相當(dāng)容易。 安裝和設(shè)置并集成到系統(tǒng)中可能只需要幾分鐘時(shí)間。 因此花費(fèi)一點(diǎn)點(diǎn)時(shí)間和精力就能立刻大幅提升系統(tǒng)性能 —— 通常是提升一個(gè)數(shù)量級(jí)。 一個(gè)簡(jiǎn)潔的解決方案卻能獲得巨大的性能收益。
Memcached還是Redis? 在現(xiàn)代高性能Web應(yīng)用中這一直是個(gè)爭(zhēng)論不休的話題。 在基于關(guān)系型數(shù)據(jù)庫的Web應(yīng)用需要提高性能時(shí),使用緩存是絕大多數(shù)架構(gòu)師的第一選擇,自然,Memcached和Redis通常是優(yōu)先選擇。Redis和Memcached都是基于內(nèi)存key-value的數(shù)據(jù)存儲(chǔ)系統(tǒng)。兩者都可以通過緩存數(shù)據(jù)結(jié)果,HTML片段或其他可能產(chǎn)生成本很高的內(nèi)容來幫助加快應(yīng)用程序的速度。
與Memcached類似,Redis將大部分?jǐn)?shù)據(jù)存儲(chǔ)在內(nèi)存中,支持的數(shù)據(jù)類型包括:字符串、哈希表、鏈表、集合、有序集合以及基于這些數(shù)據(jù)類型的相關(guān)操作。那么,Memcached與Redis有什么區(qū)別呢?讓我們一起來看一下。
Memcache與Redis的區(qū)別都有哪些?
1)、存儲(chǔ)方式
Memecache把數(shù)據(jù)全部存在內(nèi)存之中,斷電后會(huì)掛掉,數(shù)據(jù)不能超過內(nèi)存大小。
Redis有部份存在硬盤上,這樣能保證數(shù)據(jù)的持久性。
使用簡(jiǎn)單的key-value存儲(chǔ)的話,Memcached的內(nèi)存利用率更高,而如果Redis采用hash結(jié)構(gòu)來做key-value存儲(chǔ),由于其組合式的壓縮,其內(nèi)存利用率會(huì)高于Memcached。
2)、數(shù)據(jù)支持類型
Memcache對(duì)數(shù)據(jù)類型支持相對(duì)簡(jiǎn)單。
Redis有復(fù)雜的數(shù)據(jù)類型。
3)、使用底層模型不同
它們之間底層實(shí)現(xiàn)方式 以及與客戶端之間通信的應(yīng)用協(xié)議不一樣。
Redis直接自己構(gòu)建了VM 機(jī)制 ,因?yàn)橐话愕南到y(tǒng)調(diào)用系統(tǒng)函數(shù)的話,會(huì)浪費(fèi)一定的時(shí)間去移動(dòng)和請(qǐng)求。
4)、value大小
redis最大可以達(dá)到1GB,而memcache只有1MB
redis相比memcached有哪些優(yōu)勢(shì)?
(1) memcached所有的值均是簡(jiǎn)單的字符串,redis作為其替代者,支持更為豐富的數(shù)據(jù)類型
(2) redis的速度比memcached快很多
(3) redis可以持久化其數(shù)據(jù)
使用redis有哪些好處?
(1) 速度快,因?yàn)閿?shù)據(jù)存在內(nèi)存中,類似于HashMap,HashMap的優(yōu)勢(shì)就是查找和操作的時(shí)間復(fù)雜度都是O(1)
(2) 支持豐富數(shù)據(jù)類型,支持string,list,set,sorted set,hash
(3) 支持事務(wù),操作都是原子性,所謂的原子性就是對(duì)數(shù)據(jù)的更改要么全部執(zhí)行,要么全部不執(zhí)行
(4) 豐富的特性:可用于緩存,消息,按key設(shè)置過期時(shí)間,過期后將會(huì)自動(dòng)刪除
與memcached相比,Redis功能更強(qiáng)大,更受歡迎并且得到更好的支持。即使Redis的功能重疊,Redis也更好。Redis可以完成與memcached相同的工作,并且可以做得更好。Redis是新興的通用存儲(chǔ)系統(tǒng),而Memcached仍有其適用領(lǐng)域。
相關(guān)文章
數(shù)據(jù)庫查詢性能需注意幾點(diǎn)經(jīng)驗(yàn)
這篇文章主要介紹在程序編程中,需要注意數(shù)據(jù)庫的性能問題,否則會(huì)導(dǎo)致數(shù)據(jù)庫與頁面打開都很慢2013-05-05DBeaver之如何導(dǎo)出數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù)
這篇文章主要介紹了DBeaver之如何導(dǎo)出數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-04-04識(shí)別 MS SQL 各個(gè)版本的版本號(hào)的方法
識(shí)別 MS SQL 各個(gè)版本的版本號(hào)的方法...2007-10-10SQL 隨機(jī)查詢 包括(sqlserver,mysql,access等)
SQL 隨機(jī)查詢 包括(sqlserver,mysql,access等),需要的朋友可以參考下,目的一般是為了隨機(jī)讀取數(shù)據(jù)庫中的記錄。2009-10-10Hadoop 2.x偽分布式環(huán)境搭建詳細(xì)步驟
這篇文章主要為大家詳細(xì)介紹了Hadoop 2.x偽分布式環(huán)境搭建詳細(xì)步驟,感興趣的朋友可以參考一下2016-05-05使用dump transaction with no_log的危險(xiǎn)性說明
在命令參考手冊(cè)中的dump transaction with no_log條目下,有一條警告信息告訴你,你應(yīng)該把這條命令作為沒有其它辦法時(shí)的最后一招才使用它2012-07-07你也許連刪庫跑路都不會(huì)(delete、drop和truncate刪除數(shù)據(jù))
這篇文章主要給大家介紹了關(guān)于delete、drop和truncate刪除數(shù)據(jù)的方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11