redis和memcached區(qū)別.


1.背景介紹

在大多數(shù)Web應(yīng)用都將數(shù)據(jù)保存到關(guān)系型數(shù)據(jù)庫(kù)中视搏,WWW服務(wù)器從中讀取數(shù)據(jù)并在瀏覽器中顯示审孽。但隨著數(shù)據(jù)量的增大、訪問(wèn)的集中凶朗,就會(huì)出現(xiàn)關(guān)系型數(shù)據(jù)的負(fù)擔(dān)加重瓷胧、數(shù)據(jù)庫(kù)響應(yīng)緩慢显拳、網(wǎng)站打開(kāi)延遲等問(wèn)題棚愤。

通過(guò)在內(nèi)存中緩存數(shù)據(jù)庫(kù)的查詢結(jié)果,減少數(shù)據(jù)訪問(wèn)次數(shù),以提高動(dòng)態(tài)Web應(yīng)用的速度宛畦,提高網(wǎng)站架構(gòu)的并發(fā)能力和可擴(kuò)展性

傳統(tǒng)開(kāi)發(fā)中用的數(shù)據(jù)庫(kù)最多的就是MySQL了瘸洛,隨著數(shù)據(jù)量上千萬(wàn)或上億級(jí)后,它的關(guān)系型數(shù)據(jù)庫(kù)的讀取速度可能并不能滿足我們對(duì)數(shù)據(jù)的需求次和,所以內(nèi)存式的緩存系統(tǒng)就出現(xiàn)了


2.知識(shí)剖析

Memcache 是一個(gè)高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng)反肋,用于動(dòng)態(tài)Web應(yīng)用以減輕數(shù)據(jù)庫(kù)負(fù)載。它通過(guò)在內(nèi)存中緩存數(shù)據(jù)和對(duì)象來(lái)減少讀取數(shù)據(jù)庫(kù)的次數(shù)踏施,從而提高動(dòng)態(tài)石蔗、數(shù)據(jù)庫(kù)驅(qū)動(dòng)網(wǎng)站的速度。

Memcache基于一個(gè)存儲(chǔ)鍵/值對(duì)的hashmap畅形。其守護(hù)進(jìn)程(daemon )是用C寫的养距,但是客戶端可以用任何語(yǔ)言來(lái)編寫,并通過(guò)memcache協(xié)議與守護(hù)進(jìn)程通信日熬。

Redis有著更為復(fù)雜的數(shù)據(jù)結(jié)構(gòu)并且提供對(duì)他們的原子性操作棍厌,這是一個(gè)不同于其他數(shù)據(jù)庫(kù)的進(jìn)化路徑。Redis的數(shù)據(jù)類型都是基于基本數(shù)據(jù)結(jié)構(gòu)的同時(shí)對(duì)程序員透明竖席,無(wú)需進(jìn)行額外的抽象耘纱。

Redis運(yùn)行在內(nèi)存中但是可以持久化到磁盤,所以在對(duì)不同數(shù)據(jù)集進(jìn)行高速讀寫時(shí)需要權(quán)衡內(nèi)存毕荐,應(yīng)用數(shù)據(jù)量不能大于硬件內(nèi)存束析。

在內(nèi)存數(shù)據(jù)庫(kù)方面的另一個(gè)優(yōu)點(diǎn)是, 相比在磁盤上相同的復(fù)雜的數(shù)據(jù)結(jié)構(gòu)憎亚,在內(nèi)存中操作起來(lái)非常簡(jiǎn)單畸陡,這樣Redis可以做很多內(nèi)部復(fù)雜性很強(qiáng)的事情。

同時(shí)虽填,在磁盤格式方面他們是緊湊的以追加的方式產(chǎn)生的丁恭,因?yàn)樗麄儾⒉恍枰M(jìn)行隨機(jī)訪問(wèn)。


3.常見(jiàn)問(wèn)題

Redis與memcached有什么不同

什么是原子性,什么是原子性操作斋日?


4.解決方案

Memcached

內(nèi)部的數(shù)據(jù)存儲(chǔ)牲览,使用基于Slab的內(nèi)存管理方式,有利于減少內(nèi)存碎片和頻繁分配銷毀內(nèi)存所帶來(lái)的開(kāi)銷恶守。各個(gè)Slab按需動(dòng)態(tài)分配一個(gè)page的內(nèi)存

(和4Kpage的概念不同第献,這里默認(rèn)page為1M),page內(nèi)部按照不同slab class的尺寸再劃分為內(nèi)存chunk供服務(wù)器存儲(chǔ)KV鍵值對(duì)使用

Redis內(nèi)部的數(shù)據(jù)結(jié)構(gòu)最終也會(huì)落實(shí)到key-Value對(duì)應(yīng)的形式兔港,不過(guò)從暴露給用戶的數(shù)據(jù)結(jié)構(gòu)來(lái)看庸毫,

要比memcached豐富,除了標(biāo)準(zhǔn)的通常意義的鍵值對(duì)衫樊,Redis還支持List飒赃,Set利花, Hashes,Sorted Set等數(shù)據(jù)結(jié)構(gòu)

基本命令

Memcached的命令或者說(shuō)通訊協(xié)議非常簡(jiǎn)單载佳,Server所支持的命令基本就是對(duì)特定key的添加炒事,刪除,替換蔫慧,原子更新挠乳,讀取等,具體包括 Set, Get, Add, Replace, Append, Inc/Dec 等等

Memcached的通訊協(xié)議包括文本格式和二進(jìn)制格式姑躲,用于滿足簡(jiǎn)單網(wǎng)絡(luò)客戶端工具(如telnet)和對(duì)性能要求更高的客戶端的不同需求

Redis的命令在KV(String類型)上提供與Memcached類似的基本操作睡扬,在其它數(shù)據(jù)結(jié)構(gòu)上也支持基本類似的操作(當(dāng)然還有這些數(shù)據(jù)結(jié)構(gòu)所特有的操作,如Set的union黍析,List的pop等)而支持更多的數(shù)據(jù)結(jié)構(gòu)威蕉,在一定程度上也就意味著更加廣泛的應(yīng)用場(chǎng)合

除了多種數(shù)據(jù)結(jié)構(gòu)的支持,

Redis相比Memcached還提供了許多額外的特性橄仍,比如Subscribe/publish命令韧涨,以支持發(fā)布/訂閱模式這樣的通知機(jī)制等等,這些額外的特性同樣有助于拓展它的應(yīng)用場(chǎng)景Redis的客戶端-服務(wù)器通訊協(xié)議完全采用文本格式(在將來(lái)可能的服務(wù)器間通訊會(huì)采用二進(jìn)制格式)

分布式實(shí)現(xiàn):

(1)memcached的分布式由客戶端實(shí)現(xiàn)侮繁,通過(guò)一致性哈希算法來(lái)保證訪問(wèn)的緩存命中率虑粥;Redis的分布式由服務(wù)器端實(shí)現(xiàn),通過(guò)服務(wù)端配置來(lái)實(shí)現(xiàn)分布式宪哩;

(2)事務(wù)性娩贷,memcached沒(méi)有事務(wù)的概念,但是可以通過(guò)CAS協(xié)議來(lái)保證數(shù)據(jù)的完整性锁孟,一致性彬祖。Redis引入數(shù)據(jù)庫(kù)中的事務(wù)概念來(lái)保證數(shù)據(jù)的完整性和一致性。

(3)簡(jiǎn)單性品抽,memcached是純KV緩存储笑,協(xié)議簡(jiǎn)單,學(xué)習(xí)和使用成本比redis小很多

Memcached也不做數(shù)據(jù)的持久化工作圆恤,但是有許多基于memcached協(xié)議的項(xiàng)目實(shí)現(xiàn)了數(shù)據(jù)的持久化突倍,例如memcacheDB使用BerkeleyDB進(jìn)行數(shù)據(jù)存儲(chǔ),但本質(zhì)上它已經(jīng)不是一個(gè)Cache Server盆昙,而只是一個(gè)兼容Memcached的協(xié)議key-valueData Store了

Redis可以以master-slave的方式配置服務(wù)器羽历,Slave節(jié)點(diǎn)對(duì)數(shù)據(jù)進(jìn)行replica備份,Slave節(jié)點(diǎn)也可以充當(dāng)Read only的節(jié)點(diǎn)分擔(dān)數(shù)據(jù)讀取的工作

Redis內(nèi)建支持兩種持久化方案淡喜,snapshot快照和AOF 增量Log方式秕磷。快照顧名思義就是隔一段時(shí)間將完整的數(shù)據(jù)Dump下來(lái)存儲(chǔ)在文件中炼团。AOF增量Log則是記錄對(duì)數(shù)據(jù)的修改操作(實(shí)際上記錄的就是每個(gè)對(duì)數(shù)據(jù)產(chǎn)生修改的命令本身).


5.編碼實(shí)戰(zhàn)


6.擴(kuò)展思考

JAVA中緩存的實(shí)質(zhì)是什么澎嚣?

計(jì)算機(jī)緩存的定義 :緩存是CPU的一部分疏尿,它存在于CPU中就此可以說(shuō)明 CPU中不可能存放大量的數(shù)據(jù)所以java 的緩存 不是真正意義上的緩存 JAVA緩存有兩種:一、文件緩存,是指把數(shù)據(jù)存儲(chǔ)在磁盤上币叹,可以XML格式润歉,也可以序列化文件DAT格式還是其它文件格式模狭。二颈抚、內(nèi)存緩存,也就是實(shí)現(xiàn)一個(gè)類中靜態(tài)Map,對(duì)這個(gè)Map進(jìn)行常規(guī)的增刪查嚼鹉。

7.參考文獻(xiàn)

http://www.redis.net.cn/tutorial/3512.html

http://blog.csdn.net/colorant/article/details/21089057

http://blog.csdn.net/wzqzhq/article/details/64920996


今天的分享就到這里啦贩汉,歡迎大家點(diǎn)贊、轉(zhuǎn)發(fā)锚赤、留言匹舞、拍磚~

技能樹(shù).IT修真院

“我們相信人人都可以成為一個(gè)工程師,現(xiàn)在開(kāi)始线脚,找個(gè)師兄赐稽,帶你入門,掌控自己學(xué)習(xí)的節(jié)奏浑侥,學(xué)習(xí)的路上不再迷面⒍妫”。

這里是技能樹(shù).IT修真院寓落,成千上萬(wàn)的師兄在這里找到了自己的學(xué)習(xí)路線括丁,學(xué)習(xí)透明化,成長(zhǎng)可見(jiàn)化伶选,師兄1對(duì)1免費(fèi)指導(dǎo)史飞。快來(lái)與我一起學(xué)習(xí)吧~

www.jnshu.com/login/1/14708688

PPT



undefined_騰訊視頻
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末仰税,一起剝皮案震驚了整個(gè)濱河市构资,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌陨簇,老刑警劉巖蚯窥,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異塞帐,居然都是意外死亡拦赠,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門葵姥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)荷鼠,“玉大人,你說(shuō)我怎么就攤上這事榔幸≡世郑” “怎么了矮嫉?”我有些...
    開(kāi)封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)牍疏。 經(jīng)常有香客問(wèn)我蠢笋,道長(zhǎng),這世上最難降的妖魔是什么鳞陨? 我笑而不...
    開(kāi)封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任昨寞,我火速辦了婚禮,結(jié)果婚禮上厦滤,老公的妹妹穿的比我還像新娘援岩。我一直安慰自己,他們只是感情好掏导,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布享怀。 她就那樣靜靜地躺著,像睡著了一般趟咆。 火紅的嫁衣襯著肌膚如雪添瓷。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天值纱,我揣著相機(jī)與錄音鳞贷,去河邊找鬼。 笑死计雌,一個(gè)胖子當(dāng)著我的面吹牛悄晃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播凿滤,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼妈橄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了翁脆?” 一聲冷哼從身側(cè)響起眷蚓,我...
    開(kāi)封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎反番,沒(méi)想到半個(gè)月后沙热,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡罢缸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年篙贸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片枫疆。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡爵川,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出息楔,到底是詐尸還是另有隱情寝贡,我是刑警寧澤扒披,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站圃泡,受9級(jí)特大地震影響碟案,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜颇蜡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一价说、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧澡匪,春花似錦熔任、人聲如沸褒链。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)甫匹。三九已至甸鸟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間兵迅,已是汗流浹背抢韭。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恍箭,地道東北人刻恭。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像扯夭,于是被迫代替她去往敵國(guó)和親鳍贾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載地址:http://gnucto.blog.51cto.com/3391516/998509 Redis與Me...
    Ddaidai閱讀 21,444評(píng)論 0 82
  • 分布式緩存技術(shù)PK:選擇Redis還是Memcached? 經(jīng)平臺(tái)同意授權(quán)轉(zhuǎn)載 作者:田京昆(騰訊后臺(tái)研發(fā)工程師)...
    meng_philip123閱讀 68,920評(píng)論 7 60
  • 簡(jiǎn)介 memcached和redis都屬于內(nèi)存(memory)鍵-值(key-value)數(shù)據(jù)庫(kù)构拳,在設(shè)計(jì)和思想上有...
    安靜1337閱讀 83,623評(píng)論 5 56
  • 20170528 親子踐行打卡9/30 多陪伴咆爽,多閱讀。 孩子第一個(gè)30天目標(biāo):21:00前入睡置森。 媽媽第一個(gè)...
    方穎璐璐媽媽閱讀 190評(píng)論 0 0
  • 小胖子在車?yán)锓伊税胩於饭。瑳](méi)有找到錢和有用的線索。下來(lái)車凫海,對(duì)救援的人講呛凶,這個(gè)車?yán)镉腥齻€(gè)人,現(xiàn)在找到兩個(gè)盐碱,還有一個(gè)人沒(méi)...
    魯郡閱讀 299評(píng)論 0 2