開發之緩存與數據庫優化

此文僅入門,須要擴展挖深,自行鑽研html

緩存-redismysql

數據庫-mysqlredis

1. 緩存

什麼是緩存?

定義 緩存是系統快速響應的一種關鍵性技術,是一組被保存起來以備未來使用的東西,介於應用開發和系統開發之間,是產品經理們常常顧及不到的地方,也是技術架構設計的非功能性約束。sql

分類數據庫

按軟件系統所處的位置不一樣分類segmentfault

  • 客戶端緩存
  • 服務端緩存
  • 網絡中的緩存

按規模和部署方式分類:api

  • 單體緩存
  • 緩存集羣
  • 分佈式緩存

爲何要用緩存?

爲何要用緩存,咱們這裏僅從軟件開發層面來分析,首先你必須瞭解關於系統的性能的一些指標。瀏覽器

系統的性能的指標通常包括:緩存

  • 響應時間:系統對用戶的請求做出的響應時間,它完整的記錄了整個系統處理請求的時間。
  • 延遲時間:通常指系統處理完請求後,因爲網絡傳輸到用戶之間的網絡延遲時間。
  • 吞吐量:指單位時間內系統處理請求的數量。無併發的系統中,它與響應時間成反比。
  • 併發用戶數:指系統可以同時承載的正常使用系統功能的用戶數量,它比 吞吐量更能直觀的反應系統的性能
  • 資源利用率:反映的是一段時間內資源平均被佔用的狀況

系統的性能,反映在從瀏覽器到網絡,再到服務器,甚至數據庫等各個應用層面。而在各個層面使用緩存將大大提高整個系統的性能。性能優化

  • 緩存離客戶端越近,響應時間則越快;緩存離數據庫越近,則響應時間越長。
  • 緩存是一種用空間換時間的概念。
  • 若是帶寬收費(流量付費),那麼緩存就是變相的省錢利器。
  • 併發要求較高的功能,那麼緩存的主要功能就體現的十分精準了。
    • 對內,減輕數據庫資源服務器的壓力
    • 對外,提供系統的響應時間,可以容許更高的併發量,保證系統的正常運行。
  • 發展到今天,緩存已經不只僅限於這些功能。因爲篇幅有限,僅僅做介紹,方便咱們開發作參考:
    • 業務功能解耦:
    • 分佈式鎖的使用、秒殺、隊列服務
    • 定時任務的使用
    • 消息服務

緩存怎麼用?

那麼緩存怎麼用呢,那些數據適合用於緩存呢?這裏僅僅以redis這種緩存數據庫爲例,簡單的講一講服務端的緩存使用。

  • 關於redis 的基本使用,在Spring中如何調用api等基礎性功能,自行百度(PS:爛大街了)

  • redis 屬於應用級別的緩存,區別與項目中的運行內存,用於彌補應用內存不足或者服務器硬件條件有限的狀況;固然也是爲了防止高併發來保證系統穩定性。

  • redis 支持的數據格式可以知足業務開發中的99%以上的格式,而且支持分佈式,開源,社區比較活躍,因此是首選的技術

  • redis支持知足各類條件的容錯策略,這個須要本身瞭解

  • redis分佈式支持拓撲和哨兵機制兩種分佈式策略知足擴展和穩定性

  • redis 支持本地化存儲操做,並提供了2種方式來本地化

  • redis 不只僅如此,還有不少高級功能:消息隊列,機器學習,布隆過濾,bit存儲等 你們有時間,能夠去了解一下。這些東西都是能夠百度到的。

適合緩存的使用場景

  • 讀密集的業務數據
  • 有大量的熱數據
  • 對響應時效要求高的
  • 對一致性要求不是很嚴格的
  • 須要分佈式鎖的

不適合的場景

2. 數據庫

什麼是mysql數據庫?

什麼是mysql,你們平時都用,可是讓你表達一下,啥是mysql?是否內心能表達清楚呢?閉上眼睛,自問一下。 wiki 上是這麼介紹的

MySQL  is an open-source relational database management system (RDBMS). Its name is a combination of "My", the name of co-founder Michael Widenius's daughter,[7] and "SQL", the abbreviation for Structured Query Language. MySQL is free and open-source software under the terms of the GNU General Public License, and is also available under a variety of proprietary licenses. MySQL was owned and sponsored by the Swedish company MySQL AB, which was bought by Sun Microsystems (now Oracle Corporation).[8] In 2010, when Oracle acquired Sun, Widenius forked the open-source MySQL project to create MariaDB. 
  • 自行百度翻譯

若是你以爲你瞭解什麼是mysql,那麼這裏我羅列一些問題,若是你能都知道,那麼你就真的瞭解mysql了,若是不清楚,也不要緊,百度瞭解一下,mysql的知識真的不要太多。

  • 咱們平時說的mysql,是數據庫仍是mysql實例,它們的關係和區別是什麼?
  • 你知道mysql的數據存儲文件是什麼格式的嗎?這種格式有啥意義呢
  • mysql爲何不支持全文索引
  • mysql 速度快是由於不支持事務嗎?
  • mysql數據量大於1000萬性能會急劇降低嗎?
  • 你知道mysql 有多少種存儲引擎?你知道公司目前用的是哪一種存儲引擎,爲啥選了這種,相對於其餘的存儲引擎,它有哪些牛逼的地方?

問題不少?不,若是你接觸過mysql的體系,這些都是入門必備。若是以爲你缺乏這些知識,那麼不妨找本書看看,找一兩篇博客,補補。

爲何要用mysql?

這個應該你們都多少知道點,爲啥用,由於阿里也在用啊,淘寶早期就是用mysql打天下的。那麼從專業的角度考慮,爲啥阿里選了mysql,而不是其餘呢?

  • 開源,開源,開源!
  • 免費,運維免費,使用免費
  • 性能極佳
  • 社區支持特別好,插件式存儲引擎支持

mysql怎麼用?

這個怎麼用,增刪改查了,你們都會一點點,這裏要提的是如何優化mysql。

  • 所謂的優化MySQL,那必須熟悉mysql,瞭解存儲引擎,才能談優化。
  • 優化MySQL,其實就是按照MySQL的規則來寫SQL,不要瞎搞。

這裏我不打算班門弄斧,如下的博客都是比較優秀的,你們一塊兒來學習。

相關文章
相關標籤/搜索