快速緩存技術
❶ 17. 計算機為什麼採用高速緩存技術
應該是為了解決低速的外設和高速的CPU之間速度不匹配的問題。其中最主要是解決CPU和內存之間的速度匹配問題。
內存太慢,不能及時提供數據給
CPU用於計算(CPU現在幾個GHZ的頻率,速度比內存塊很多),會大大降低CPU的效率,因此在CPU內核中集成了高速度的靜態RAM,即SRAM構
成的CACHE,提前用演算法預讀取內存中的數據到CACHE中去,CPU用到的大部分數據(96%以上)都直接在CACHE中得到,不用去讀內存了,提高
速度。
緩存在其它地方也有用到,比如硬碟,但提到高速緩存一般是只的CPU內部的CACHE。
❷ 什麼是高速緩存,作用是什麼
什麼是高速緩存技術:
高速緩存英文是cache。一種特殊的存儲器子系統,其中復制了頻繁使用的數據,以利於CPU快速訪問。存儲器的高速緩沖存儲器存儲了頻繁訪問的 RAM 位置的內容及這些數據項的存儲地址。當處理器引用存儲器中的某地址時,高速緩沖存儲器便檢查是否存有該地址。如果存有該地址,則將數據返回處理器;如果沒有保存該地址,則進行常規的存儲器訪問。因為高速緩沖存儲器總是比主RAM 存儲器速度快,所以當 RAM 的訪問速度低於微處理器的速度時,常使用高速緩沖存儲器。
高速緩存的作用:
在CPU開始執行任何指令之前,都會首先從內存中取得該條指令以及其它一些相關數據和信息。為了加快CPU的運行速度,幾乎所有的晶元都採用兩種不同類型的內部存儲器,即高速緩存。緩存被用來臨時存放一些經常被使用的程序片段或數據。
一級高速緩存是性能最好緩存類型,與解釋指令和執行算術運算的處理單元一到構成CPU的核心。CPU可以在全速運行的狀態下讀取存放在一級高速緩存中的指令或數據。Intel的處理器產品一般都會具有32K的一級緩存,而象AMD或Via這種競爭對手的產品則會使用更多的一級緩存。
如果在一級緩存中沒有找到所需要的指令或數據,處理器會查看容量更大的二級緩存。二級緩存既可以被集成到CPU晶元內部,也可以作為外部緩存。Pentium II處理器具有512K的二級緩存,工作速度相當於CPU速度的一半。Celeron以及更新的Pentium III晶元則分別具有128K和256K的在片二級緩存,能夠在處理器全速下運行。
對於存放在速度較慢的二級緩存中的指令或數據,處理器往往需要等待2到4個時鍾周期。為了充分利用計算資源,CPU可以在這段時間內查看和執行其它正在等候處理,但不需要使用額外數據的指令,從而提高整個系統的速度,把空閑時間降低到最低程度。
❸ 求解:什麼是高速緩存以及緩沖的原理是什麼
——》1,高速緩存(Cache),全稱「高速緩沖存儲器」。
——》2,例如:當CPU處理數據時,它會先到高速緩存中去尋找,如果數據因之前的操作已經讀取而被暫存其中,就不需要再從主內存中讀取數據——由於CPU的運行速度一般比主內存快,因此若要經常存取主內存的話,就必須等待數個CPU周期從而造成浪費。
——》3,提供「高速緩存」的目的是為了讓數據存取的速度適應CPU的處理速度,其基於的原理是內存中「程序執行與數據訪問的局域性行為」。
——》4,現在Cache的概念已經被擴充了:不僅在CPU和主內存之間有Cache,而且在內存和硬碟之間也有Cache(磁碟高速緩存),乃至在硬碟與網路之間也有某種意義上的「Cache」(Internet臨時文件夾)。
——》5,凡是位於速度相差較大的兩種硬體之間的,用於協調兩者數據傳輸速度差異的結構,均可稱之為Cache。
——》6,所以硬碟和內存之間的Cache就叫做磁碟高速緩存。它是在內存中開辟一塊位置,來臨時存取硬碟中的數據。這項技術可使計算機讀寫時的存儲系統平均數據傳輸率提高5-10倍,適應了當前激增的海量數據存儲需求。
——》7,在DOS時代,我們用:
smartdrv 內存容量
命令來載入硬碟高速緩存。自從有了Windows後,我們就不需要載入硬碟高速緩存了,因為Windows本身有自己的高速緩存管理單元,如果強行使用smartdrv命令載入,反而會影響Windows的性能。
——》8,我們在用硬碟安裝Win2000/XP時候,系統會提示載入高速緩存,這是因為在安裝的初期還是DOS操作,所以為了達到讀存的速度,安裝程序要求載入高速緩存。
❹ 常用的緩存技術
第一章 常用的緩存技術
1、常見的兩種緩存
本地緩存:不需要序列化,速度快,緩存的數量與大小受限於本機內存
分布式緩存:需要序列化,速度相較於本地緩存較慢,但是理論上緩存的數量與大小無限(因為緩存機器可以不斷擴展)
2、本地緩存
Google guava cache:當下最好用的本地緩存
Ehcache:spring默認集成的一個緩存,以spring cache的底層緩存實現類形式去操作緩存的話,非常方便,但是欠缺靈活,如果想要靈活使用,還是要單獨使用Ehcache
Oscache:最經典簡單的頁面緩存
3、分布式緩存
memcached:分布式緩存的標配
Redis:新一代的分布式緩存,有替代memcached的趨勢
3.1、memcached
經典的一致性hash演算法
基於slab的內存模型有效防止內存碎片的產生(但同時也需要估計好啟動參數,否則會浪費很多的內存)
集群中機器之間互不通信(相較於Jboss cache等集群中機器之間的相互通信的緩存,速度更快<--因為少了同步更新緩存的開銷,且更適合於大型分布式系統中使用)
使用方便(這一點是相較於Redis在構建客戶端的時候而言的,盡管redis的使用也不困難)
很專一(專做緩存,這一點也是相較於Redis而言的)
3.2、Redis
可以存儲復雜的數據結構(5種)
strings-->即簡單的key-value,就是memcached可以存儲的唯一的一種形式,接下來的四種是memcached不能直接存儲的四種格式(當然理論上可以先將下面的一些數據結構中的東西封裝成對象,然後存入memcached,但是不推薦將大對象存入memcached,因為memcached的單一value的最大存儲為1M,可能即使採用了壓縮演算法也不夠,即使夠,可能存取的效率也不高,而redis的value最大為1G)
hashs-->看做hashTable
lists-->看做LinkedList
sets-->看做hashSet,事實上底層是一個hashTable
sorted sets-->底層是一個skipList
有兩種方式可以對緩存數據進行持久化
RDB
AOF
事件調度
發布訂閱等
4、集成緩存
專指spring cache,spring cache自己繼承了ehcache作為了緩存的實現類,我們也可以使用guava cache、memcached、redis自己來實現spring cache的底層。當然,spring cache可以根據實現類來將緩存存在本地還是存在遠程機器上。
5、頁面緩存
在使用jsp的時候,我們會將一些復雜的頁面使用Oscache進行頁面緩存,使用非常簡單,就是幾個標簽的事兒;但是,現在一般的企業,前台都會使用velocity、freemaker這兩種模板引擎,本身速度就已經很快了,頁面緩存使用的也就很少了。
總結:
在實際生產中,我們通常會使用guava cache做本地緩存+redis做分布式緩存+spring cache就集成緩存(底層使用redis來實現)的形式
guava cache使用在更快的獲取緩存數據,同時緩存的數據量並不大的情況
spring cache集成緩存是為了簡單便捷的去使用緩存(以註解的方式即可),使用redis做其實現類是為了可以存更多的數據在機器上
redis緩存單獨使用是為了彌補spring cache集成緩存的不靈活
就我個人而言,如果需要使用分布式緩存,那麼首先redis是必選的,因為在實際開發中,我們會緩存各種各樣的數據類型,在使用了redis的同時,memcached就完全可以舍棄了,但是現在還有很多公司在同時使用memcached和redis兩種緩存。
❺ JAVA幾種緩存技術介紹說明
1、TreeCache / JBossCache
JBossCache是一個復制的事務處理緩存,它允許你緩存企業級應用數據來更好的改善性能。緩存數據被自動復制,讓你輕松進行JBoss伺服器之間 的集群工作。JBossCache能夠通過JBoss應用服務或其他J2EE容器來運行一個MBean服務,當然,它也能獨立運行。
2、WhirlyCache
Whirlycache是一個快速的、可配置的、存在於內存中的對象的緩存。它能夠通過緩存對象來加快網站或應用程序的速度,否則就必須通過查詢資料庫或其他代價較高的處理程序來建立。
3、SwarmCache
SwarmCache是一個簡單且有效的分布式緩存,它使用IP multicast與同一個區域網的其他主機進行通訊,是特別為集群和數據驅動web應用程序而設計的。SwarmCache能夠讓典型的讀操作大大超過寫操作的這類應用提供更好的性能支持。
4、JCache
JCache是個開源程序,正在努力成為JSR-107開源規范,JSR-107規范已經很多年沒改變了。這個版本仍然是構建在最初的功能定義上。
5、ShiftOne
ShiftOne Java Object Cache是一個執行一系列嚴格的對象緩存策略的Java lib,就像一個輕量級的配置緩存工作狀態的框架。