項目中緩存是如何使用的?為什么要用緩存?緩存使用不當(dāng)會造成什么后果?

面試官心理分析

這個問題,互聯(lián)網(wǎng)公司必問,要是一個人連緩存都不太清楚,那確實比較尷尬。

只要問到緩存,上來第一個問題,肯定是先問問你項目哪里用了緩存?為啥要用?不用行不行?如果用了以后可能會有什么不良的后果?

這就是看看你對緩存這個東西背后有沒有思考,如果你就是傻乎乎的瞎用,沒法給面試官一個合理的解答,那面試官對你印象肯定不太好,覺得你平時思考太少,就知道干活兒。


面試題剖析

項目中緩存是如何使用的?

這個,需要結(jié)合自己項目的業(yè)務(wù)來。

為什么要用緩存?

用緩存,主要有兩個用途:高性能、高并發(fā)。

高性能

假設(shè)這么個場景,你有個操作,一個請求過來,吭哧吭哧你各種亂七八糟操作 mysql,半天查出來一個結(jié)果,耗時 600ms。但是這個結(jié)果可能接下來幾個小時都不會變了,或者變了也可以不用立即反饋給用戶。

那么此時咋辦?

緩存啊,折騰 600ms 查出來的結(jié)果,扔緩存里,一個 key 對應(yīng)一個 value,下次再有人查,別走 mysql 折騰 600ms 了,直接從緩存里,通過一個 key 查出來一個 value,2ms 搞定。性能提升 300 倍。

就是說對于一些需要復(fù)雜操作耗時查出來的結(jié)果,且確定后面不怎么變化,但是有很多讀請求,那么直接將查詢出來的結(jié)果放在緩存中,后面直接讀緩存就好。

高并發(fā)

mysql 這么重的數(shù)據(jù)庫,壓根兒設(shè)計不是讓你玩兒高并發(fā)的,雖然也可以玩兒,但是天然支持不好。mysql單機支撐到 2000QPS 也開始容易報警了。

所以要是你有個系統(tǒng),高峰期一秒鐘過來的請求有 1 萬,那一個 mysql 單機絕對會死掉。你這個時候就只能上緩存,把很多數(shù)據(jù)放緩存,別放 mysql。緩存功能簡單,說白了就是 key-value 式操作,單機支撐的并發(fā)量輕松一秒幾萬十幾萬,支撐高并發(fā) so easy。單機承載并發(fā)量是 mysql 單機的幾十倍。

????????????緩存是走內(nèi)存的,內(nèi)存天然就支撐高并發(fā)。

用了緩存之后會有什么不良后果?

常見的緩存問題有以下幾個:

1.緩存與數(shù)據(jù)庫雙寫不一致

2.緩存雪崩、緩存穿透

3.緩存并發(fā)競爭

后面再詳細說明。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 面試題 項目中緩存是如何使用的?為什么要用緩存?緩存使用不當(dāng)會造成什么后果? 面試官心理分析 這個問題,互聯(lián)網(wǎng)公司...
    kevin0016閱讀 1,449評論 0 8
  • 1.項目中緩存是如何使用的?為什么要用緩存?緩存使用不當(dāng)會造成什么后果? 面試題剖析 為什么要用緩存? 用緩存,主...
    jsbintask閱讀 9,339評論 0 217
  • 為什么要用緩存? 高性能 假設(shè)這么個場景,你有個操作,一個請求過來,吭哧吭哧你各種亂七八糟操作mysql,半天查出...
    _云起閱讀 7,503評論 1 50
  • 曾經(jīng),我經(jīng)常抽風(fēng)似的清理自己的微博空間朋友圈,只是因為那些沒有人關(guān)注關(guān)心的動態(tài)會讓我覺得自己很蠢,于是“毀尸滅跡”...
    溫潤如玉的喵閱讀 301評論 1 1
  • 準(zhǔn)備工作 安裝預(yù)環(huán)境(少什么安裝什么) 安裝Python 2.7 安裝ErLang 下載ErLang并解壓 配置安...
    dzgdp888閱讀 3,037評論 2 5

友情鏈接更多精彩內(nèi)容