問題1 專案中快取是如何使用的?為什麼要用快取?

2021-09-20 19:01:53 字數 1017 閱讀 6171

專案中快取是如何使用的?為什麼要用快取?快取使用不當會造成什麼後果?

分析:

只要問到快取,肯定是先問問你專案**用了快取?為啥要用?不用行不行?如果用了以後可能會有什麼不良的後果?

專案中快取是如何使用的?

這個,需要結合自己專案的業務來。

為什麼要用快取?

用快取,主要有兩個用途:高效能、高併發。

高效能

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

快取啊,折騰 600ms 查出來的結果,扔快取裡,乙個 key 對應乙個 value,下次再有人查,別走 mysql 折騰 600ms 了,直接從快取裡,通過乙個 key 查出來乙個 value,2ms 搞定。效能提公升 300 倍。

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

高併發

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

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

快取是走記憶體的,記憶體天然就支撐高併發。

用了快取之後會有什麼不良後果?

常見的快取問題有以下幾個:

快取與資料庫雙寫不一致

快取雪崩、快取穿透

快取併發競爭

123 專案中快取資料的型別

在設計快取的資料時,可以快取以下型別的資料 例如如 user enable 以資料庫物件的角度考慮,應用更普遍 例如,使用者的基本資訊 user user.query.filter by id 1 first user user物件 以資料庫查詢的角度考慮,應用場景較特殊,一般僅針對較複雜的查詢進行...

教你如何在as3專案中使用嵌入字型

為什麼要使用嵌入字型的方式來顯示flash中的文字呢?理由很多 防止使用者系統沒有指定的字型 使flash顯示效果更好,表現更好 使多語言版本可以方便的根據編碼格式更改字型 等等 在as2和as1中同樣可以嵌入字型,但是對於要支援中文的專案來說,嵌入字型會導致swf檔案編譯時間暴長!那麼,就只能採用...

如何就解決專案中的中文亂碼問題

中文亂碼問題是困惑很多 開發人員最為頭疼的問題,今天我在這裡,將我這兩年來從實踐專案經 驗中 總結出的解決方法分享給大家,希望給大家帶去幫助。1.資料庫安裝時採用gb2312編碼方式 2.盡可能以post方式提交 3.修改tomcat伺服器下的配置檔案如下 支援get方式提交 4.如果是ssh整合1...