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