快取(cache memory)是硬碟控制器上的一塊記憶體晶元,具有極快的訪問速度,它是硬碟內部儲存和外界介面之間的緩衝器。由於硬碟的內部資料傳輸速度和外界介面傳輸速度不同,快取在其中起到乙個緩衝的作用。快取的大小與速度是直接關係到硬碟的傳輸速度的重要因素,能夠大幅度地提高硬碟整體效能。當硬碟訪問零碎資料時需要不斷地在硬碟與記憶體之間交換資料,有大快取,則可以將那些零碎資料暫存在快取中,減小系統的負荷,也提高了資料的傳輸速度。這個是介紹了電腦的硬碟快取..當然,電腦裡面包括很多種快取,不是本文重點.我們主要關注這段話的幾個關鍵點:速度,效能,減小系統的負荷,這就是快取的優點.
asp.net快取概述:
通常,應用程式可以將那些頻繁訪問的資料,以及那些需要大量處理時間來建立的資料儲存在記憶體中,從而提高效能。 例如,如果應用程式使用複雜的邏輯來處理大量資料,然後再將資料作為使用者頻繁訪問的報表返回,避免在使用者每次請求資料時重新建立報表可以提高效率。 同樣,如果應用程式包含乙個處理複雜資料但不需要經常更新的頁,則在每次請求時伺服器都重新建立該頁會使工作效率低下。快取適用範圍:在這些情況下,為了幫助您提高應用程式的效能,asp.net 使用兩種基本的快取機制來提供快取功能。 第一種機制是應用程式快取,它允許您快取所生成的資料,如 dataset 物件或自定義報表業務物件。 第二種機制是頁輸出快取,它儲存頁處理輸出,並在使用者再次請求該頁時,重用所儲存的輸出,而不是再次處理該頁。(摘自msdn)
1.頻繁訪問的資料asp.net快取應用:原因:提高效能.應用程式使用複雜的邏輯來處理大量資料,然後再將資料作為使用者頻繁訪問的報表返回,避免在使用者每次請求資料時重新建立報表可以提高效率。
2.需要大量處理時間來建立的資料
原因:提高效能.如果應用程式包含乙個處理複雜資料但不需要經常更新的頁,則在每次請求時伺服器都重新建立該頁會使工作效率低下。
asp.net中通過cache來管理應用程式快取,也提供了對頁面的快取.快取有它的優勢和劣勢,在使用時候應該視情況而用,在專案前期應預留快取介面,在專案後期應該做效能優化加上快取.1,頁面輸出快取:快取整個頁面,使用者請求時不通過頁面處理的生命週期,直接從記憶體中讀取.主要用於一些不經常修改的頁面,或者需要大量處理編譯的頁面有用.
2,頁面部分輸出快取:快取部分頁面,也就是快取使用者控制項(.ascx).
3,應用程式快取:提供一種程式設計的方式來實現快取,通過鍵值對的形式將任意資料存放到記憶體中,應用程式快取是易丟失的,使用應用程式快取的模式是,確定在訪問某一項時該項是否存在於快取中,如果存在,則使用。如果該項不存在,則可以重新建立該項,然後將其放回快取中。這一模式可確保快取中始終有最新的資料。
4,快取依賴:net 2.0引入的自定義快取依賴項,特別是基於ms-sql server的sqlcachedependency特性,使得我們可以避免「資料過期」的問題,它能夠根據資料庫中相應資料的變化,通知快取,並移除那些過期的資料,可以參考我的一篇博文配置快取依賴asp.net 下sqlserver2005 快取依賴
下面進入本文主題memcached
對於乙個新的應用我們開發者主要關心,它是什麼,它能做什麼,它有什麼優勢和劣勢.怎麼用..
memcached是什麼
memcached是高效能的,分布式的記憶體物件快取系統,用於在動態應用中減少資料庫負載,提公升訪問速度。memcached能做什麼
memcached的優勢和劣勢
memcache非常快,memcached使用了libevent(如果可以的話,在linux下使用epoll)來均衡任何數量的開啟鏈結,使用非阻塞的網路i/o,對內部物件實現引用計數(因此,針對多樣的客戶端,物件可以處在多樣的狀態), 使用自己的頁塊分配器和雜湊表, 因此虛擬記憶體不會產生碎片並且虛擬記憶體分配的時間複雜度可以保證為o(1).。memcached怎麼使用memcached的快取是一種分布式的,可以讓不同主機上的多個使用者同時訪問, 因此解決了共享記憶體只能單機應用的侷限,更不會出現使用資料庫做類似事情的時候,磁碟開銷和阻塞的發生。當然memcached也可以用在本地,但是相對於asp.net cache那太不划算了.
現在比較常用的mysql資料庫,mysql預設開啟了查詢快取,當資料表更新時,查詢快取會被更新,如果頻繁的發生這種更新會導致查詢快取效率非常低下.如果mysql資料庫量不大,可以使用mysql查詢快取,否則memcached更合適.
還有一種共享記憶體方式,多個程序或者執行緒共享同乙個快取.雖然效率提高了不少,但是畢竟只能侷限在一台機子上.
因為memcached也是記憶體管理,所以也易丟失,理論memcached可以達到併發的最大連線數是是200,這個數值應該可以調整,也取決於機器的配置.因為memcached是分布式的,所以它的最大瓶頸在於網路連線.
1,windows下安裝memcached
服務的啟動:
1, 將memcached-1.2.1-win32.zip解決到指定的地方,如e:\memcached
2 命令列輸入 'e:\memcached\memcached.exe -d install'
3 命令列輸入 'e:\memcached\memcached.exe -d start' ,該命令啟動 memcached,預設監聽埠為 11211
2,ubuntu 下安裝memcached
啟動終端,在終端下輸入sudo apt-get install memcached
現在安裝成功後啟動服務,
memcached -d -u root
具體的命令請參考下面的說明
常用設定: -p 監聽的埠.net客戶端工具有好多種,我用的是-l 連線的ip位址, 預設是本機
-d start 啟動memcached服務
-d restart 重起memcached服務
-d stop|shutdown 關閉正在執行的memcached服務
-d install 安裝memcached服務
-d uninstall 解除安裝memcached服務
-u 以的身份執行 (僅在以root執行的時候有效)
-m 最大記憶體使用,單位mb。預設64mb
-m 記憶體耗盡時返回錯誤,而不是刪除項
-c 最大同時連線數,預設是1024
-f 塊大小增長因子,預設是1.25
-n 最小分配空間,key+value+flags預設是48
-h 顯示幫助
執行以下**測試一下.
我在虛擬機器裡面裝的ubuntu,ip是192.168.0.192.執行成功以後**之後說明memcached配置成功.
後續再詳細介紹.net下操作memcached…
Memcached 快取體系
關於memcached的博文太多了,以下是個人學習的收集整理。本節討論問題 一 介紹與應用 關於memcached以下為摘自博文 客戶端的版本比較多,並且不能互用,因為採用了壓縮機制,日誌等功能,所以在選擇客戶端時要注意這些。a.windows下 直接使用memcached.exe 程式就可以了,也...
memcached 快取應用問題
快取穿透與快取雪崩 快取系統不得不考慮的另乙個問題是快取穿透與失效時的雪崩效應。快取穿透是指查詢乙個一定不存在的資料,由於快取是不命中時被動寫的,並且出於容錯考慮,如果從儲存層查不到資料則不寫入快取,這將導致這個存在的資料每次請求都要到儲存層去查詢,失去了快取的意義。有很多種方法可以有效地解決快取穿...
memcached快取架構優化
基本架構 web nginx php php fpm 9000 memcached mysql 安裝memcache工具包 yum install memcached y systemctl start memcached 安裝memcache原始碼包 tar zxf memcache 4.0.5....