項目中緩存是如何使用的?爲什麼要用緩存?緩存使用不當會造成什麼後果?...

點擊上方“Coder編程”,選擇“置頂公衆號”

技術文章第一時間送達!

每天進步一點,不做curd工程師與api調用工程師

博客網站:https://www.coder-programming.cn/

面試題

項目中緩存是如何使用的?爲什麼要用緩存?緩存使用不當會造成什麼後果?

面試官心理分析

這個問題,互聯網公司必問,要是一個人連緩存都不太清楚,那確實比較尷尬。

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

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

都是套路

面試題剖析

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

這個,需要結合自己項目的業務來。

爲什麼要用緩存?

用緩存,主要有兩個用途:高性能、高併發。

高性能

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

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

就是說對於一些需要複雜操作耗時查出來的結果,且確定後面不怎麼變化,但是有很多讀請求,那麼結果直接放在緩存,後面直接讀緩存就好。

高併發

mysql 這麼重的數據庫,壓根兒設計不是讓你玩兒高併發的,雖然也可以玩兒,但是天然支持不好。mysql 單機支撐到 2000QPS 也開始容易報警了。

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

緩存是走內存的,內存天然就支撐高併發。

用了緩存之後會有什麼不良後果?

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

  1. 緩存與數據庫雙寫不一致

  2. 緩存雪崩、緩存穿透

  3. 緩存併發競爭

  4. 等等...

還有許多不良的後果或者遇到的情況都可以跟面試官聊聊~

比如可以接着這樣說:

我們項目在線上曾經出現過緩存穿透現象,有人故意刷我們的接口,製造我們緩存中不存在的 key 發起大量請求,導致大量請求落到數據庫,造成連接超時,請求過慢等現象 巴拉巴拉~

其他的也可以挑着說一點,讓面試官知道你是有實戰經驗的人!

嘿嘿

往期推薦

  • 分享一道美美美團面試題!

  • 雙非本科,面試“涼”經!

  • 工作一年多,參加搜狐社招!面試官都問了我什麼?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章