天天看點

緩存|學習筆記緩存

開發者學堂課程【Java面試疑難點串講2:緩存】學習筆記,與課程緊密聯系,讓使用者快速學習知識。

課程位址: https://developer.aliyun.com/learning/course/25

緩存

1、緩存問題

對于整個電腦而言,它有一個自己的固定狀态,如果要讀取資料。

流程:将硬碟上的内容直接加載到記憶體裡面,然後再通過記憶體進行讀取。因為硬碟上所儲存的都是實體上的二進制資料。

如果你的電腦隻是你一個人在使用,那麼沒有任何的問題。這個時候,你會發現當人一多的時候,你的電腦就會變得跟蝸牛跑步一樣。非常的慢。

如果隻是你一個人在使用,那麼慢一點感覺不到,可是如果換到了公網上,一堆的使用者要進行資料讀取的時候,現在的事情就出現了,所有的操作如果通過資料庫查詢得到(實體磁盤上),那麼速度就會非常的慢,假如說一個查詢需要60ms的時間,這個時間在人一多會呈指數倍增長。

是以有些人就開始想如何可以減少這種操作所帶來的延遲時間的增長呢?

于是有人提出:我們不使用普通的硬碟全部換固态硬碟(速度可以提升,但是價格也提升)。固态硬碟不禁用。

如果我不是土豪,無法縮短記憶體與磁盤間的讀取的延遲,那麼這個時候怎麼辦?

那麼唯一的解決方案是不讀取硬碟上的内容。速度就會非常的快了。可是這種做法就有三種實作模式:(CMS)直接使用記憶體作為緩存,也就是說将所讀取出來的資料儲存在記憶體裡面(資料的失效問題)、使用緩存資料庫(Redies、Memcached、NoSQL資料庫)。

而對于記憶體緩存而言,有兩種常用的元件:oscache(是在頁面上使用,例如:需要在某一個JSP頁面之中緩存一個對象的時候使用)、ehcache(是在一些開發架構之中出現,例如:Hibernate、Mybatis、Shiro)。

即:緩存的本質=減少實體磁盤的讀取時間(延遲取消了),直接讀記憶體,還需要進行一些合理的記憶體管理。