分布式緩存的面試題1


 

1、面試題

 

在項目中緩存是如何使用的?緩存如果使用不當會造成什么后果?

 

2、面試官心里分析

 

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

 

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

 

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

 

3、面試題剖析

 

一個一個來看

 

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

 

這個,你結合你自己項目的業務來,你如果用了那恭喜你,你如果沒用那不好意思,你硬加也得加一個場景吧

 

2)為啥在項目里要用緩存呢?

 

用緩存,主要是倆用途,高性能和高並發

 

1)高性能

 

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

 

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

 

這就是所謂的高性能。

 

就是把你一些復雜操作耗時查出來的結果,如果確定后面不咋變了,然后但是馬上還有很多讀請求,那么直接結果放緩存,后面直接讀緩存就好了。

 

 

2)高並發

 

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

 

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

 

 

3)所以你要結合這倆場景考慮一下,你為啥要用緩存?

 

一般很多同學項目里沒啥高並發場景,那就別折騰了,直接用高性能那個場景吧,就思考有沒有可以緩存結果的復雜查詢場景,后續可以大幅度提升性能,優化用戶體驗,有,就說這個理由,沒有??那你也得編一個出來吧,不然你不是在搞笑么

 

3)用了緩存之后會有啥不良的后果?

 

呵呵。。。你要是沒考慮過這個問題,那你就尷尬了,面試官會覺得你頭腦簡單,四肢也不發達。你別光是傻用一個東西,多考慮考慮背后的一些事兒。

 

常見的緩存問題有仨(當然其實有很多,我這里就說仨,你能說出來也可以了)

 

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

2)緩存雪崩

3)緩存穿透

4)緩存並發競爭

 

這仨問題是常見面試題,后面我要講,大家看到后面自然就知道了,但是人要是問你,你至少自己能說出來,並且給出對應的解決方案

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM