在項目中緩存是如何使用的?緩存若是使用不當會形成什麼後果?mysql
這個問題,互聯網公司必問,要是一我的連緩存都不太清楚,那確實比較尷尬git
只要問到緩存,上來第一個問題,確定能是先問問你項目哪裏用了緩存?爲啥要用?不用行不行?若是用了之後可能會有什麼不良的後果?github
這就是看看你對你用緩存這個東西背後,有沒有思考,若是你就是傻乎乎的瞎用,無法給面試官一個合理的解答。那我只能說,面試官對你印象確定不太好,以爲你平時思考太少,就知道幹活兒。面試
一個一個來看sql
這個,你結合你本身項目的業務來,你若是用了那恭喜你,你若是沒用那很差意思,你硬加也得加一個場景吧數據庫
用緩存,主要是倆用途,高性能和高併發緩存
假設這麼個場景,你有個操做,一個請求過來,吭哧吭哧你各類亂七八糟操做mysql,半天查出來一個結果,耗時600ms。可是這個結果可能接下來幾個小時都不會變了,或者變了也能夠不用當即反饋給用戶。那麼此時咋辦?併發
緩存啊,折騰600ms查出來的結果,扔緩存裏,一個key對應一個value,下次再有人查,別走mysql折騰600ms了。直接從緩存裏,經過一個key查出來一個value,2ms搞定。性能提高300倍。高併發
這就是所謂的高性能。性能
就是把你一些複雜操做耗時查出來的結果,若是肯定後面不咋變了,而後可是立刻還有不少讀請求,那麼直接結果放緩存,後面直接讀緩存就行了。
mysql這麼重的數據庫,壓根兒設計不是讓你玩兒高併發的,雖然也能夠玩兒,可是自然支持很差。mysql單機支撐到2000qps也開始容易報警了。
因此要是你有個系統,高峯期一秒鐘過來的請求有1萬,那一個mysql單機絕對會死掉。你這個時候就只能上緩存,把不少數據放緩存,別放mysql。緩存功能簡單,說白了就是key-value式操做,單機支撐的併發量輕鬆一秒幾萬十幾萬,支撐高併發so easy。單機承載併發量是mysql單機的幾十倍。
通常不少同窗項目裏沒啥高併發場景,那就別折騰了,直接用高性能那個場景吧,就思考有沒有能夠緩存結果的複雜查詢場景,後續能夠大幅度提高性能,優化用戶體驗,有,就說這個理由,沒有??那你也得編一個出來吧,否則你不是在搞笑麼
呵呵。。。你要是沒考慮過這個問題,那你就尷尬了,面試官會以爲你頭腦簡單,四肢也不發達。你別光是傻用一個東西,多考慮考慮背後的一些事兒。
常見的緩存問題有如下幾點
這是常見面試題,後面我要講,你們看到後面天然就知道了,可是人要是問你,你至少本身能說出來,而且給出對應的解決方案