快取原理與設計之快取基本思想及分類

2022-09-23 11:42:14 字數 2734 閱讀 6539

在mybatis功能點一應用:二級快取整合redis - 池塘裡洗澡的鴨子 - (cnblogs.com)中,mybatis使用第三方快取redis將查詢資料儲存。實際上除了redis還可以使用其他的第三方快取也可以,只有實現了jdk提供的cache介面即可。

這個介面就是快取設計濃縮的精華。那麼究竟為什麼要使用快取,其原理是什麼以及為什麼jdk要這樣設計呢?

一、快取的使用場景(為什麼要使用快取)

1、就資料庫而言,db快取,減輕db伺服器壓力。

一般情況下資料存在資料庫中,應用程式直接運算元據庫。

當訪問量上萬,資料庫壓力增大,可以採取的方案有:

讀寫分離,分庫分表;

當訪問量達到10萬、百萬,就需要引入快取。

將已經訪問過的內容或資料儲存起來,當再次訪問時先找快取,快取命中返回資料。

不命中再找資料庫,並回填快取。

2、提高系統響應

資料庫的資料是存在檔案裡,也就是硬碟。與記憶體做交換(swap)

在大量瞬間訪問時(高併發)mysql單機會因為頻繁io而造成無法響應。mysql的innodb是有行鎖

將資料快取在redis中,也就是存在了記憶體中。

記憶體天然支援高併發訪問,可以瞬間處理大量請求

。3、做session分離

傳統的session是由tomcat自己進行維護和管理。

集群或分布式環境,不同的tomcat管理各自的session。

只能在各個tomcat之間,通過網路和io進行session的複製,極大的影響了系統的效能:

1)各個tomcat間複製session,效能損耗

2)不能保證各個tomcat的session資料同步

將登入成功後的session資訊,存放在redis中,這樣多個伺服器(tomcat)可以共享session資訊。

redis的作用是資料的臨時儲存,可參考nginx負載均衡中利用redis解決session一致性問題 - 池塘裡洗澡的鴨子 - (cnblogs.com)。

還有其他使用場景,比如做分布式鎖,樂觀鎖等不贅述。

二、快取的定義

什麼是快取?

快取原指cpu上的一種高速儲存器,它先於記憶體與cpu交換資料,速度很快;

現在泛指儲存在計算機上的原始資料的複製集,便於快速訪問。

在網際網路技術中,快取是系統快速響應的關鍵技術之一,

以空間換時間的一種技術(藝術)。在大型**中從瀏覽器到網路,再到應用伺服器,再到資料庫,通過在各個層面應用快取技術,大大提

公升了系統效能和使用者體驗。

三、快取分類

1、客戶端快取

傳統網際網路:頁面快取和瀏覽器快取

頁面快取:

頁面自身對某些元素或全部元素進行儲存,並儲存成檔案。

cache等

開啟步驟:

1)設定manifest描述檔案

使用localstorage

進行本地的資料儲存,示例**:

瀏覽器快取

當客戶端向伺服器請求資源時,會先抵達瀏覽器快取,如果瀏覽器有「要請求資源」的副本,就可以直接

從瀏覽器快取中提取而不是從原始伺服器中提取這個資源。

瀏覽器快取可分為強制快取和協商快取。

強制快取:直接使用瀏覽器的快取資料

條件:cache-control的max-age沒有過期或者expires的快取時間沒有過期。

協商快取:伺服器資源未修改,使用瀏覽器的快取(304);反之,使用伺服器資源(200)。

快取

2、網路端快取

通過**的方式響應客戶端請求,對重複的請求返回快取中的資料資源。

web**快取

可以快取原生伺服器的靜態資源,比如樣式、等。

常見的反向**伺服器比如大名鼎鼎的nginx。

3、服務端快取

伺服器端快取是整個快取體系的核心。包括資料庫級快取、平台級快取和應用級快取。

資料庫級快取

資料庫是用來儲存和管理資料的。

mysql在server層使用查詢快取機制。將查詢後的資料快取起來。

k-v結構,key:select語句的hash值,value:查詢結果

innodb儲存引擎中的buffer-pool用於快取innodb索引及資料塊。

平台級快取

平台級快取指的是帶有快取特性的應用框架。

比如:gu**acache 、ehcache(二級快取,硬碟)、oscache(頁面快取)等。

部署在應用伺服器上,也稱為伺服器本地快取。

應用級快取

具有快取功能的中介軟體:redis、memcached、evcache(aws)、tair(阿里 、美團)等。

採用k-v形式儲存。

利用集群支援高可用、高效能、高併發、高擴充套件的

分布式快取

設計自己產品的時候,大有作為的快取在應用級快取,這也是**快取的重點區域。

快取原理與設計之快取的讀寫模式

上篇快取原理與設計之快取基本思想及分類 池塘裡洗澡的鴨子 cnblogs.com 中提到了快取的應用場景,這些場景的應用也是快取的優勢所在 減輕伺服器壓力 提公升效能 提高使用者體驗等 同時增加快取也意味著其他額外的開銷也就是代價 額外的硬體支出 高併發快取失效 快取與資料庫不同步 髒讀 等一系列問...

架構設計 快取 快取的原理與應用

訪問特點和現實世界的財富分配一樣遵循二八定律 80 的業務訪問集中在20 的資料上。既然大部分的業務訪問集中在一小部分資料上,那麼就可以把這一小部分資料快取在記憶體中,可以減少資料庫的訪問壓力,提高整個 的資料訪問速度,改善資料的寫入效能。在整個 應用中,快取幾乎無處不在,既存在於瀏覽器,也存在於應...

Spring註解快取設計原理及實戰

spring 3.1後引入註解快取,其本質不是乙個具體的快取實現,而是乙個對快取使用的抽象。通過在既有 中新增少量自定義註解,即可夠達到使用快取物件和快取方法的返回物件的效果。spring的快取技術具備相當的靈活性,不僅能夠使用spel來定義快取的key和各種condition,還提供開箱即用的快取...