Redis 和 Memcached 的區(qū)別

參考:
Redis 和 Memcached 有什么區(qū)別?Redis 的線程模型是什么桦踊?為什么單線程的 Redis 比多線程的 Memcached 效率要高得多?

一.redis 和 memcached 有啥區(qū)別?

1.redis 支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu)

redis 相比 memcached 來說驼修,擁有更多的數(shù)據(jù)結(jié)構(gòu),能支持更豐富的數(shù)據(jù)操作诈铛。如果需要緩存能夠支持更復(fù)雜的結(jié)構(gòu)和操作乙各, redis 會(huì)是不錯(cuò)的選擇。

2.redis 原生支持集群模式

在 redis3.x 版本中幢竹,便能支持 cluster 模式耳峦,而 memcached 沒有原生的集群模式,需要依靠客戶端來實(shí)現(xiàn)往集群中分片寫入數(shù)據(jù)焕毫。

3.性能對(duì)比

由于 redis 只使用單核蹲坷,而 memcached 可以使用多核驶乾,所以平均每一個(gè)核上 redis 在存儲(chǔ)小數(shù)據(jù)時(shí)比 memcached 性能更高。而在 100k 以上的數(shù)據(jù)中循签,memcached 性能要高于 redis轻掩,雖然 redis 最近也在存儲(chǔ)大數(shù)據(jù)的性能上進(jìn)行優(yōu)化,但是比起 memcached懦底,還是稍有遜色唇牧。

二.redis 的線程模型

redis 內(nèi)部使用文件事件處理器 file event handler,這個(gè)文件事件處理器是單線程的聚唐,所以 redis 才叫做單線程的模型丐重。它采用 IO 多路復(fù)用機(jī)制同時(shí)監(jiān)聽多個(gè) socket,根據(jù) socket 上的事件來選擇對(duì)應(yīng)的事件處理器進(jìn)行處理杆查。

文件事件處理器的結(jié)構(gòu)包含 4 個(gè)部分:

  • 多個(gè) socket
  • IO 多路復(fù)用程序
  • 文件事件分派器
  • 事件處理器(連接應(yīng)答處理器扮惦、命令請(qǐng)求處理器、命令回復(fù)處理器)

多個(gè) socket 可能會(huì)并發(fā)產(chǎn)生不同的操作亲桦,每個(gè)操作對(duì)應(yīng)不同的文件事件崖蜜,但是 IO 多路復(fù)用程序會(huì)監(jiān)聽多個(gè) socket,會(huì)將 socket 產(chǎn)生的事件放入隊(duì)列中排隊(duì)客峭,事件分派器每次從隊(duì)列中取出一個(gè)事件豫领,把該事件交給對(duì)應(yīng)的事件處理器進(jìn)行處理。

來看客戶端與 redis 的一次通信過程:

1.客戶端 socket01 向 redis 的 server socket 請(qǐng)求建立連接舔琅,此時(shí) server socket 會(huì)產(chǎn)生一個(gè) AE_READABLE 事件等恐,IO 多路復(fù)用程序監(jiān)聽到 server socket 產(chǎn)生的事件后,將該事件壓入隊(duì)列中备蚓。
2.文件事件分派器從隊(duì)列中獲取該事件课蔬,交給連接應(yīng)答處理器
3.連接應(yīng)答處理器會(huì)創(chuàng)建一個(gè)能與客戶端通信的 socket01郊尝,并將該 socket01 的 AE_READABLE 事件與命令請(qǐng)求處理器關(guān)聯(lián)二跋。
4.假設(shè)此時(shí)客戶端發(fā)送了一個(gè) set key value 請(qǐng)求,此時(shí) redis 中的 socket01 會(huì)產(chǎn)生 AE_READABLE 事件流昏,IO 多路復(fù)用程序?qū)⑹录喝腙?duì)列扎即,此時(shí)事件分派器從隊(duì)列中獲取到該事件,由于前面 socket01 的 AE_READABLE 事件已經(jīng)與命令請(qǐng)求處理器關(guān)聯(lián)横缔,因此事件分派器將事件交給命令請(qǐng)求處理器來處理铺遂。
5.命令請(qǐng)求處理器讀取 socket01 的 key value 并在自己內(nèi)存中完成 key value 的設(shè)置。操作完成后茎刚,它會(huì)將 socket01 的 AE_WRITABLE 事件與命令回復(fù)處理器關(guān)聯(lián)襟锐。
6.如果此時(shí)客戶端準(zhǔn)備好接收返回結(jié)果了,那么 redis 中的 socket01 會(huì)產(chǎn)生一個(gè) AE_WRITABLE 事件膛锭,同樣壓入隊(duì)列中粮坞,事件分派器找到相關(guān)聯(lián)的命令回復(fù)處理器蚊荣,由命令回復(fù)處理器對(duì) socket01 輸入本次操作的一個(gè)結(jié)果,比如 ok莫杈,之后解除 socket01 的 AE_WRITABLE 事件與命令回復(fù)處理器的關(guān)聯(lián)互例。

這樣便完成了一次通信。

三.為啥 redis 單線程模型也能效率這么高筝闹?

  • 純內(nèi)存操作
  • 核心是基于非阻塞的 IO 多路復(fù)用機(jī)制
  • 單線程反而避免了多線程的頻繁上下文切換問題
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末媳叨,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子关顷,更是在濱河造成了極大的恐慌糊秆,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件议双,死亡現(xiàn)場(chǎng)離奇詭異痘番,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)平痰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門汞舱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人宗雇,你說我怎么就攤上這事昂芜。” “怎么了逾礁?”我有些...
    開封第一講書人閱讀 156,872評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵说铃,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我嘹履,道長(zhǎng),這世上最難降的妖魔是什么债热? 我笑而不...
    開封第一講書人閱讀 56,415評(píng)論 1 283
  • 正文 為了忘掉前任砾嫉,我火速辦了婚禮,結(jié)果婚禮上窒篱,老公的妹妹穿的比我還像新娘焕刮。我一直安慰自己,他們只是感情好墙杯,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評(píng)論 6 385
  • 文/花漫 我一把揭開白布配并。 她就那樣靜靜地躺著,像睡著了一般高镐。 火紅的嫁衣襯著肌膚如雪溉旋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評(píng)論 1 290
  • 那天嫉髓,我揣著相機(jī)與錄音观腊,去河邊找鬼邑闲。 笑死,一個(gè)胖子當(dāng)著我的面吹牛梧油,可吹牛的內(nèi)容都是我干的苫耸。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼儡陨,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼褪子!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起骗村,我...
    開封第一講書人閱讀 37,691評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤褐筛,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后叙身,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渔扎,經(jīng)...
    沈念sama閱讀 44,137評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評(píng)論 2 326
  • 正文 我和宋清朗相戀三年信轿,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了晃痴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,622評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡财忽,死狀恐怖倘核,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情即彪,我是刑警寧澤紧唱,帶...
    沈念sama閱讀 34,289評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站隶校,受9級(jí)特大地震影響漏益,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜深胳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評(píng)論 3 312
  • 文/蒙蒙 一绰疤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧舞终,春花似錦轻庆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至夸盟,卻和暖如春蛾方,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來泰國(guó)打工转捕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留作岖,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,316評(píng)論 2 360
  • 正文 我出身青樓五芝,卻偏偏與公主長(zhǎng)得像痘儡,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子枢步,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評(píng)論 2 348

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

  • 說到redis就會(huì)聯(lián)想到memcached沉删,反之亦然。了解過兩者的同學(xué)有那么個(gè)大致的印象:redis與memcac...
    java成功之路閱讀 348評(píng)論 1 1
  • 拖延癥就是與良好的生活方式相沖突 一醉途、課程學(xué)習(xí) 1矾瑰、拖延癥就是與良好的生活方式相沖突 2、拖延癥有哪些不良的生活習(xí)...
    呂長(zhǎng)勇閱讀 837評(píng)論 0 4
  • 深圳+Eric+4歲+21天 第19天 整整讀了一本的足球書《你好隘擎!足球》以后殴穴,才進(jìn)入英文繪本閱讀。主題是Max ...
    小年媽媽2015閱讀 563評(píng)論 0 1
  • 黎明來臨货葬,當(dāng)睡眼惺忪的你從床上爬起來時(shí)采幌,一天的開始就從這一刻計(jì)算。日復(fù)一日震桶,年復(fù)一年休傍,日子似乎停滯不前進(jìn)入循環(huán)的怪...
    霸王有約閱讀 941評(píng)論 0 1
  • 坐上中青旅的大巴,不到三個(gè)小時(shí)就來到了位于浙江西面的昌化縣——我國(guó)著名的旅游風(fēng)景區(qū)蹲姐。這里依山榜水磨取,山路隨著司機(jī)嫻熟...
    靜子空杯閱讀 254評(píng)論 0 0