緩存隨談系列之一:數(shù)據(jù)庫緩存

我是個很懶的人,喜歡自己偷著練“葵花寶典”岁疼,唯一可以看到我之前網(wǎng)上寫的安全方面的文章阔涉,還是好幾年前的事情了缆娃。公司最近來了一群美女,可是熱鬧了瑰排,寫稿獎勵美女贯要,我老興奮了。

說起緩存相關技術椭住,老多了崇渗, memcache、redis京郑、squid宅广、varnish、web cache些举、 CDN等等跟狱。緩存技術五花八門,但這些技術間有什么共性的地方户魏,又有什么不同的地方呢兽肤?答案肯定是有的,這次為大家分享及整理一下緩存方面的技術绪抛,主要分為三個系列展開:

  • 緩存隨談系列之一:數(shù)據(jù)庫緩存
  • 緩存隨談系列之二:靜態(tài)緩存
  • 緩存隨談系列之三:動態(tài)緩存

本文主要介紹數(shù)據(jù)庫緩存技術為開頭,不足之處歡迎大家拍磚电禀,使勁拍幢码。
一、什么是數(shù)據(jù)庫緩存
我們知道常見的數(shù)據(jù)庫尖飞,比如oracle症副、mysql等,數(shù)據(jù)都是存放在磁盤中政基。雖然在數(shù)據(jù)庫層也做了對應的緩存贞铣,但這種數(shù)據(jù)庫層次的緩存一般針對的是查詢內容,而且粒度也太小沮明,一般只有表中數(shù)據(jù)沒有變更的時候辕坝,數(shù)據(jù)庫對應的cache才發(fā)揮了作用。但這并不能減少業(yè)務系統(tǒng)對數(shù)據(jù)庫產(chǎn)生的增荐健、刪酱畅、查、改的龐大IO壓力江场。所以數(shù)據(jù)庫緩存技術在此誕生纺酸,實現(xiàn)熱點數(shù)據(jù)的高速緩存,提高應用的響應速度址否,極大緩解后端數(shù)據(jù)庫的壓力餐蔬。
以下為memcache數(shù)據(jù)庫緩存為例,以圖說明一下什么是數(shù)據(jù)庫緩存:

image001.png

二、數(shù)據(jù)庫緩存的技術特點
性能優(yōu)越
數(shù)據(jù)庫緩存的第一個技術特點就是提高性能樊诺,所以數(shù)據(jù)庫緩存的數(shù)據(jù)基本上都是存儲在內存中仗考,相比io讀寫的速度啄骇,數(shù)據(jù)訪問快速返回痴鳄。而且在mysql 5.6的版本開始,已經(jīng)把memcache這種跟數(shù)據(jù)庫緩存直接掛鉤的中間件直接集成進去了痪寻,已經(jīng)等不及我們自己去單獨部署對應數(shù)據(jù)庫緩存的中間件了橡类。
應用場景
針對數(shù)據(jù)庫的增顾画、刪研侣、查庶诡、改,數(shù)據(jù)庫緩存技術應用場景絕大部分針對的是“查”的場景咆课。比如末誓,一篇經(jīng)常訪問的帖子/文章/新聞、熱門商品的描述信息书蚪、好友評論/留言 等喇澡。因為在常見的應用中,數(shù)據(jù)庫層次的壓力有80%的是查詢殊校,20%的才是數(shù)據(jù)的變更操作晴玖。所以絕大部分的應用場景的還是“查”緩存。當然为流,“增窜醉、刪、改”的場景也是有的艺谆。比如榨惰,一篇文章訪問的次數(shù),不可能每訪問一次静汤,我們就去數(shù)據(jù)庫里面加一次吧琅催?這種時候居凶,我們一般“增”場景的緩存就必不可少。否則藤抡,一篇文章被訪問了十萬次侠碧,代碼層次不會還去做十萬次的數(shù)據(jù)庫操作吧。
數(shù)據(jù)一致性
在很多應用場景中缠黍,當一個數(shù)據(jù)發(fā)生變更的時候弄兜,很多人在考慮怎么樣確保緩存數(shù)據(jù)和數(shù)據(jù)庫中數(shù)據(jù)保存一致性,確保從緩存讀取的數(shù)據(jù)是最新的瓷式。甚至替饿,有人在對應數(shù)據(jù)變更的時候,先更新數(shù)據(jù)庫贸典,然后再去更新緩存视卢。我覺得這個考慮不太現(xiàn)實,一方面這會導致代碼層次邏輯變得復雜廊驼,另外一方面也真想不明白還要緩存干什么了据过。在絕大多數(shù)的應用中,緩存中的數(shù)據(jù)和數(shù)據(jù)庫中的數(shù)據(jù)是不一致的妒挎。即绳锅,我們犧牲了實時性換回了訪問速度。比如酝掩,一篇經(jīng)常訪問的帖子鳞芙,可能這篇帖子已經(jīng)在數(shù)據(jù)庫層次進行了變更。而我們每次訪問的時候庸队,讀取的都是緩存中的數(shù)據(jù)(帖子)。既然是緩存闯割,那么必然是對實時性可以有一定的容忍度的數(shù)據(jù)彻消,容忍度的時間可以是5分鐘,也可以是5小時宙拉,取決于業(yè)務場景的要求宾尚。相反,一定要求是實時性的數(shù)據(jù)庫谢澈,就不應該從緩存里讀取煌贴,比如庫存,再比如價格锥忿。
高可用
自從有了緩存牛郑,代碼每天快樂的去緩存中愉快的玩耍。為什么說高可用呢敬鬓,我們知道緩存為數(shù)據(jù)庫抵擋了很多壓力淹朋,同時也為應用提供了良好的訪問速度笙各。但同時有沒有想過緩存的感受,如果當數(shù)據(jù)庫緩存“罷工”了础芍,這會出現(xiàn)什么后果杈抢?特別在一些高并發(fā)的應用中,數(shù)據(jù)庫層肯定是“消化不良“仑性,最終導致應用全面崩潰惶楼。所以緩存的高可用顯得非常重要。

三诊杆、數(shù)據(jù)庫緩存常見開源技術
要說用于數(shù)據(jù)庫緩存場景的開源技術歼捐,那必然是memcache和redis這兩個中間件。

| 數(shù)據(jù)類型 | 持久性 | 分布式
----|------|---- | -----
memcache | 支持簡單數(shù)據(jù)類型 | 不支持數(shù)據(jù)持久化存儲 | 不支持主從刽辙、不支持sharing(代碼層次通過hash可以實現(xiàn))
redis | 數(shù)據(jù)類型豐富窥岩,支持set、list等類型| 支持數(shù)據(jù)磁盤持久化存儲|支持主從宰缤,支持sharding(redis 3.0開始支持)
因為都是專注于內存緩存領域颂翼,memcache和redis向來都有爭議。比如性能慨灭,到底是memcache性能好朦乏,還是redis性能更好等。同樣都是內存緩存技術氧骤,它們都有自己的技術特性呻疹。沒有更好的技術,只有更合適的技術筹陵。個人總結一下刽锤,有持久化需求或者對數(shù)據(jù)結構和處理有高級要求的應用,選擇redis朦佩。其他簡單的key/value存儲并思,選擇memcache。所以根據(jù)自身業(yè)務特性语稠,數(shù)據(jù)庫緩存來選擇適合自己的技術宋彼。

暫不說用不用數(shù)據(jù)庫緩存,見過有人把session存儲在數(shù)據(jù)庫中的仙畦,也見過把視頻/文件轉化成二進制存儲在數(shù)據(jù)庫的输涕,這種行為無疑是逆天的。合理應用數(shù)據(jù)庫緩存技術慨畸,且行且珍惜莱坎,切勿走向誤區(qū)。

我為自己帶鹽寸士,原創(chuàng)作者:喬銳杰

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末型奥,一起剝皮案震驚了整個濱河市瞳收,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌厢汹,老刑警劉巖螟深,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異烫葬,居然都是意外死亡界弧,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門搭综,熙熙樓的掌柜王于貴愁眉苦臉地迎上來垢箕,“玉大人,你說我怎么就攤上這事兑巾√趸瘢” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵蒋歌,是天一觀的道長帅掘。 經(jīng)常有香客問我,道長堂油,這世上最難降的妖魔是什么修档? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮府框,結果婚禮上吱窝,老公的妹妹穿的比我還像新娘。我一直安慰自己迫靖,他們只是感情好院峡,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著系宜,像睡著了一般照激。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蜈首,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天实抡,我揣著相機與錄音欠母,去河邊找鬼欢策。 笑死,一個胖子當著我的面吹牛赏淌,可吹牛的內容都是我干的踩寇。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼六水,長吁一口氣:“原來是場噩夢啊……” “哼俺孙!你這毒婦竟也來了辣卒?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤睛榄,失蹤者是張志新(化名)和其女友劉穎荣茫,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體场靴,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡啡莉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了旨剥。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咧欣。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖轨帜,靈堂內的尸體忽然破棺而出魄咕,到底是詐尸還是另有隱情,我是刑警寧澤蚌父,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布哮兰,位于F島的核電站,受9級特大地震影響梢什,放射性物質發(fā)生泄漏奠蹬。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一嗡午、第九天 我趴在偏房一處隱蔽的房頂上張望囤躁。 院中可真熱鬧,春花似錦荔睹、人聲如沸狸演。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽宵距。三九已至,卻和暖如春吨拗,著一層夾襖步出監(jiān)牢的瞬間满哪,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工劝篷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留哨鸭,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓娇妓,卻偏偏與公主長得像像鸡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子哈恰,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內容