「php」關於『存儲』的那些必備知識

PHP常用緩存技術的總結,關於‘存儲’的那些必備知識。

1、全頁面靜態化緩存:將頁面全部生成為HTML靜態頁面,用戶訪問時直接訪問靜態頁面,不走PHP服務器的解析流程。此種方式在CMS系統中比較常見,如dedecms。

實現方法:輸出緩存

ob_start()--打開“輸出控制緩衝”;

some code --要運行的代碼;

$content=ob_get_contents()--返回“輸出緩衝區的內容”;

some code --使用file_put_contents()等函數將返回的數據寫入HTML文件;

ob_clearn()--清空“輸出緩衝區”;

2、頁面部分緩存:將頁面中不常變動的部分進行靜態化緩存,而經常變化的部分不緩存,最後組裝在一起顯示;可以使用類似ob_get_contents()的方式實現,也可以利用類似ESI之類的頁面片段緩存策略,使其用來做動態頁面中相對靜態的片段部分的緩存。該緩存方式常用與商城中的商品頁。

3、數據緩存:緩存數據的一種方式。比如,商城中的某個商品信息,當用商品id去請求時,就會得出包括店鋪信息、商品信息等數據,此時就可以將這些 數據緩存到一個php文件中,文件名包含商品id來建一個唯一標示;下一次有人想查看這個商品時,首先就直接調這個文件裡面的信息,而不用再去數據庫查 詢;其實緩存文件中緩存的就是一個php數組之類;Ecmall商城系統裡面就用了這種方式;

4、查詢緩存:根據查詢來進行緩存。將查詢得到的數據緩存在一個文件中,下次遇到相同的查詢時,就直接先從這個文件裡面調數據,不再去查數據庫;但此處的緩存文件名可能就需要以查詢語句為基點來建立唯一標示.

注意:以上幾種緩存方式都需要對緩存的文件設置一個有效時間,在這個時間內,相同的訪問會先取緩存文件的內容,超過有效時間後就重新從數據庫中獲取數據,並生成新的緩存文件。

5、內存式緩存:使用redis,memcached等nosql數據庫設置PHP緩存,通過緩存查詢結果,來減少數據庫的訪問次數,從而提高網站的響應速度。

6、apache緩存模塊:apache安裝完以後,是不允許被cache的。如果外接了cache或squid服務器要求進行web加速的話,就需要在htttpd.conf裡進行設置,當然前提是在安裝apache的時候要激活mod_cache的模塊。

安裝apache時:./configure –enable-cache –enable-disk-cache –enable-mem-cache

7、PHP APC緩存擴展:使用PHP中的APC擴展來進行緩存

8、Opcode:首先php代碼被解析為Tokens,然後再編譯為Opcode碼,最後執行Opcode碼,返回結果;所以,對於相同的php文件,第一次運行時 可以緩存其Opcode碼,下次再執行這個頁面時,直接會去找到緩存下的opcode碼,直接執行最後一步,而不再需要中間的步驟了。比較知名的是XCache、Turck MM Cache、PHP Accelerator等。

「php」關於‘存儲’的那些必備知識

什麼是memcached?

Memcached 是一個高性能的分佈式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提高動態、數據庫驅動網站的速度。

memcached的特點:

1.全內存運轉

2.哈希方式存儲

3.簡單文本協議進行數據通信

4.只操作字符型數據

5.其它類型數據由應用解釋,序列化以及反序列化

6.集群也由應用進行控制,採用一致性散列(哈希)算法

Memcached的缺點

純內存操作,關機後數據全部丟失

保存字節數據,數據類型貧乏

LRU算法導致數據不可控的丟失

一致性處理簡單

應用端太厚,服務器端太薄

應用場景有限,難以被看成是完整的數據庫產品

「php」關於‘存儲’的那些必備知識

什麼是redis?

Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。從2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Redis的開發由Pivotal贊助。

redis的特點

Redis跟memcache不同的是,儲存在Redis中的數據是持久化的,斷電或重啟後,數據也不會丟失。因為Redis的存儲分為內存存儲、磁盤存儲和log文件三部分,重啟後,Redis可以從磁盤重新將數據加載到內存中,這些可以通過配置文件對其進行配置,正因為這樣,Redis才能實現持久化。

「php」關於‘存儲’的那些必備知識

什麼是MongoDB?

MongoDB 是一個基於分佈式文件存儲的數據庫。由C++語言編寫。旨在為WEB應用提供可擴展的高性能數據存儲解決方案。

MongoDb特點?

它的特點是高性能、易部署、易使用,存儲數據非常方便。主要功能特性有:

*面向集合存儲,易存儲對象類型的數據。

*模式自由。

*支持動態查詢。

*支持完全索引,包含內部對象。

*支持查詢。

*支持複製和故障恢復。

*使用高效的二進制數據存儲,包括大型對象(如視頻等)。

*自動處理碎片,以支持雲計算層次的擴展性。

*支持RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言。

*文件存儲格式為BSON(一種JSON的擴展)。

*可通過網絡訪問。


分享到:


相關文章: