對Redis和Memcached的一點理解

什么是Redis和Memcached####

如果想做一名合格的程序員緩存是離不開的愧膀,我在日常的工作中也用到過Redis和Memcached兩種緩存,與其說緩存彪杉,Redis定位是NoSql的DB毅往,而Memcached則是一個KV的DB。但是二者都能充當緩存的角色派近,我們實際使用也以這二者居多攀唯。

什么場景會用到####

用到緩存的場景方方面面,因為他們的定位也不只是緩存渴丸,也可以用來做實際的數(shù)據(jù)存儲侯嘀。在實際的開發(fā)中,因為業(yè)務上的需求谱轨,二者也都用過戒幔,下面是我使用的場景。
1.利用Memcached存儲郵件連接的加密串土童,用于進行郵箱驗證
2.利用Memcached存儲手機驗證碼诗茎,一些網(wǎng)頁上加密用的key等
3.利用Redis做業(yè)務層的數(shù)據(jù)緩存,這樣可以擋掉一部分請求献汗,避免請求打到DB敢订,對DB造成影響。
4.利用Redis做Session的存儲罢吃,對一些用戶的身份和狀態(tài)進行校驗楚午。
5.利用Redis做一些計算數(shù)據(jù),例如數(shù)據(jù)從Storm/Spark進行計算刃麸,對計算結(jié)果進行存儲醒叁,在請求時校驗請求,屏蔽掉惡意的訪問泊业,如:爬蟲
由于業(yè)務的需要和API的便捷性把沼,后面將Memcached換成了Redis,不是因為Memcached不好吁伺,是因為是在拒絕不了Redis方便的Api接口饮睬。

API的風格和數(shù)據(jù)類型####

說道API,真心想吐槽Memcached的API是在太屎了篮奄,大大降低開發(fā)效率捆愁。前期開發(fā)的時候是采用Memcached的割去,但是,后期我果斷換掉了使用Memcached的業(yè)務昼丑,因為代碼可讀性實在太低呻逆,反觀Redis,提供了豐富的接口和數(shù)據(jù)類型菩帝,基本能滿足所有的使用場景咖城,同時支持SuB/Pub,擴展性很好呼奢。具體API和數(shù)據(jù)類型的區(qū)別有下面幾點:
1.Memcached的基本數(shù)據(jù)類型是String宜雀,而Redis除了String之外還支持List、Set握础、ZSet和Hash等數(shù)據(jù)類型辐董。
2.API上Memcached只支持基本的add del等,但是Redis針對不同的數(shù)據(jù)結(jié)構(gòu)提供了豐富的API禀综,也內(nèi)置實現(xiàn)了一些隊列简烘、發(fā)布/訂閱的API。

架構(gòu)上的異同####

上面都是使用上的不同菇存,下面看下架構(gòu)上的不同夸研,也正是因為架構(gòu)的不同,使得二者有同時存在的必要依鸥。
首先亥至,Redis架構(gòu)上采用單線程的模式,而Memcached采用的是多線程的贱迟。這是決定二者使用場景的重要因素姐扮。
1.從資源上講,由于Redis是單線程模式衣吠,也就是說Redis只使用單核處理(for子進程這種操作例外)茶敏,因為當前的CPU基本都是多核CPU,那么Redis不會和其他進程進行計算資源的爭搶缚俏,或者說爭搶的概率比較低惊搏。對于一臺機器上多個Redis實例這無疑是一件好事,大家各司其職忧换,互不影響恬惯。但是Memcached不一樣,多線程處理的模式亚茬,使得Memcached和其他的進程有大量的CPU爭搶酪耳。這對性能是大大不利的。
2.從處理模型上講刹缝,Redis因為是單線程處理模式碗暗,也就意味著需要保證處理速度足夠快颈将,才能保證效率。這也和Redis的設計理念不謀而合言疗,Redis利用單線程的原因就是晴圾,它認為處理相當?shù)难杆伲瑔尉€程不用進行各種鎖操作洲守,純內(nèi)存的操作也能保證處理的速度可以保證疑务。但是這樣存在問題,那就是如果操作的文件塊較大梗醇,那么后面的請求可能會排隊,這樣就會導致請求大量的超時撒蟀。所以Redis比較適合處理速度比較快叙谨,數(shù)據(jù)操作開銷比較小的場景,而由于Memcached是多線程模式保屯,所以手负,對于計算開銷,和數(shù)據(jù)存取開銷比較大的場景可以考慮使用Memcached姑尺。

總結(jié)####

對于API風格實在不友好的Memcached竟终,我真是無法忍受,以至于我把所有需要緩存的場景全都換成了Redis切蟋。這可能也是我個人的習慣的選擇统捶。總之柄粹,上面是我對Redis和Memcached的一點點看法喘鸟,歡迎批評指正。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末驻右,一起剝皮案震驚了整個濱河市什黑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌堪夭,老刑警劉巖愕把,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異森爽,居然都是意外死亡恨豁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門拗秘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來圣絮,“玉大人,你說我怎么就攤上這事雕旨“缃常” “怎么了捧请?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長棒搜。 經(jīng)常有香客問我疹蛉,道長,這世上最難降的妖魔是什么力麸? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任可款,我火速辦了婚禮,結(jié)果婚禮上克蚂,老公的妹妹穿的比我還像新娘闺鲸。我一直安慰自己,他們只是感情好埃叭,可當我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布摸恍。 她就那樣靜靜地躺著,像睡著了一般赤屋。 火紅的嫁衣襯著肌膚如雪立镶。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天类早,我揣著相機與錄音媚媒,去河邊找鬼。 笑死涩僻,一個胖子當著我的面吹牛缭召,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播令哟,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼恼琼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了屏富?” 一聲冷哼從身側(cè)響起晴竞,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎狠半,沒想到半個月后噩死,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡神年,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年已维,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片已日。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡垛耳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情堂鲜,我是刑警寧澤栈雳,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站缔莲,受9級特大地震影響哥纫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜痴奏,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一蛀骇、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧读拆,春花似錦擅憔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至棉姐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間啦逆,已是汗流浹背伞矩。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留夏志,地道東北人乃坤。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像沟蔑,于是被迫代替她去往敵國和親湿诊。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,700評論 2 354

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