緩存的收益與成本

咱們今天來討論一下使用緩存後會有哪些收益與成本,咱們接下來分爲收益、成本、使用場景三部分來討論前端

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.運維成本運維

  • 例如Redis Cluster

3、使用場景

最後咱們來看一下緩存的使用場景。性能

1.下降後端負載優化

  • 對高消耗的SQL:join結果集/分組統計結果緩存。
  • 例如作一個排行榜的計算須要涉及不少不少表,可是咱們只須要最終的計算結果。若是每次都去進行統計的話將會消耗大量的資源,這時候只須要放在緩存中讀寫就不須要計算了。

2.加速請求響應

  • 利用Redis/Memcache優化IO響應時間。

3.大量寫合併爲批量寫:

  • 如計數器先Redis累加再批量寫DB。
  • 相似於秒殺系統、投票系統等,不須要每次都寫DB,能夠先寫在Redis裏再定時寫入DB,這樣會大量節省DB的消耗

更多好文

請掃描下面二維碼

歡迎關注~

相關文章
相關標籤/搜索