您好,登錄后才能下訂單哦!
本篇內容介紹了“php緩存怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
一個網站或者一個應用的標準流程是瀏覽器向應用服務器發出請求,應用服務器做一些計算和邏輯判斷之后再請求數據庫,數據庫收到請求后在經過計算將數據返回給應用服務器,應用服務器再次計算后把數據返回給瀏覽器
那么,隨著web業務的復雜度和并發量的增加,應用服務器所做的計算和邏輯處理越來越多,而應用服務器的資源是有限的,且數據庫每秒接受并處理請求的次數也是有限的。為了在有限的資源提供盡可能多的吞吐量,就是減少計算量,縮短請求流程(減少網絡I/O或硬盤I/O)。這時,就用到了緩存(Cache)
1、數據緩存:
數據緩存:這里所說的數據緩存是指數據庫查詢PHP緩存機制,每次訪問頁面的時候,都會先檢測相應的緩存數據是否存在,如果不存在,就連接數據庫,得到數據,并把查詢結果序列化后保存到文件中,以后同樣的查詢結果就直接從緩存表或文件中獲得。
用的最廣的例子看Discuz的搜索功能,把結果ID緩存到一個表中,下次搜索相同關鍵字時先搜索緩存表。
舉個常用的方法,多表關聯的時候,把附表中的內容生成數組保存到主表的一個字段中,需要的時候數組分解一下,這樣的好處是只讀一個表,壞處就是兩個數據同步會多不少步驟,數據庫永遠是瓶頸,用硬盤換速度,是這個的關鍵點。
2、頁面緩存:
每次訪問頁面的時候,都會先檢測相應的緩存頁面文件是否存在,如果不存在,就連接數據庫,得到數據,顯示頁面并同時生成緩存頁面文件,這樣下次訪問的時候頁面文件就發揮作用了。(模板引擎和網上常見的一些PHP緩存機制類通常有此功能)
3、時間觸發緩存:
檢查文件是否存在并且時間戳小于設置的過期時間,如果文件修改的時間戳比當前時間戳減去過期時間戳大,那么就用緩存,否則更新緩存。
4、內容觸發緩存:
當插入數據或更新數據時,強制更新PHP緩存機制。
5、靜態緩存:
這里所說的靜態緩存是指靜態化,直接生成HTML或XML等文本文件,有更新的時候重生成一次,適合于不太變化的頁面,這就不說了。
實例擴展:
Memcached;
是一個高性能的分布式內存對象緩存系統,用于動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提高動態、數據庫驅動網站的速度。Memcached基于一個存儲鍵/值對的hashmap。
// 初始化 $cache = new Memcache(); $cache->pconnect(127.0.0.1, 11211); // 寫入 $cache->set(CACHE_PREFIX . $key, $value, MEMCACHE_COMPRESSED, $expire);(CACHE_PREFIX 為了避免命名沖突,最好加一個前綴,MEMCACHE_COMPRESSED一個標記,設置為0表示不壓縮) // 讀取 $cache->get(CACHE_PREFIX . $key); // 刪除 $cache->delete(CACHE_PREFIX . $key);
是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API。類似的安裝好php擴展// 初始化$cache = new Redis();
// 初始化$cache = new \Redis(); $cache->connect(CACHE_HOSTNAME, CACHE_PORT); // 先檢查是否存在,然后寫入并設置有效時間 if($cache->exists($key)){ $cache->delete(CACHE_PREFIX . $key); } $cache->set(CACHE_PREFIX . $key, serialize($value)); $cache->expire(CACHE_PREFIX . $key, $expire); // 讀取 $cache->get(CACHE_PREFIX . $key);
“php緩存怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。