咱們今天來討論一下使用緩存後會有哪些收益與成本,咱們接下來分爲收益、成本、使用場景三部分來討論前端
1、收益
1.加速讀寫數據庫
- 經過緩存加速讀寫速度:CPU L1/L2/L3 Cache、Linux page Cache加速硬盤讀寫、瀏覽器緩存、Ehcache緩存數據庫結果
- 收益是比較明顯的,例如Redis、Memcache都是性能很是高的數據庫,可是加速讀寫是相對的,並非說MySQL之類的數據庫性能不夠好,只是Redis性能會更高。
2.下降後端負載後端
- 後端服務器經過前端緩存下降負載: 業務端使用Redis下降後端MySQL負載等
- MySQL並非一個面向前端的大流量數據庫,例如每秒10萬的併發MySQL就比較吃力了,尤爲是涉及一些大量數據的SQL就更慢了。
因此說使用緩存的收益主要就是兩點:加速讀寫和下降後端負載瀏覽器
2、成本
咱們來看一下成本緩存
1.數據不一致服務器
2.代碼維護成本併發
- 多了一層緩存邏輯。
- 本來只須要讀寫MySQL就能實現功能,但加入了緩存以後就要去維護緩存的數據,增長了代碼複雜度。
3.運維成本運維
3、使用場景
最後咱們來看一下緩存的使用場景。性能
1.下降後端負載優化
- 對高消耗的SQL:join結果集/分組統計結果緩存。
- 例如作一個排行榜的計算須要涉及不少不少表,可是咱們只須要最終的計算結果。若是每次都去進行統計的話將會消耗大量的資源,這時候只須要放在緩存中讀寫就不須要計算了。
2.加速請求響應
- 利用Redis/Memcache優化IO響應時間。
3.大量寫合併爲批量寫:
- 如計數器先Redis累加再批量寫DB。
- 相似於秒殺系統、投票系統等,不須要每次都寫DB,能夠先寫在Redis裏再定時寫入DB,這樣會大量節省DB的消耗
更多好文
請掃描下面二維碼
歡迎關注~