緩存技術可減輕服務器負載、降低網絡擁塞、增強WWW可擴展性,其基本思想是利用客戶訪問的時間局部性,將客戶訪問過的內容在Cache中存放一個副本,當該內容下次被訪問時,不必連接到駐留網站,而是由Cache中保留的副本提供。緩存是一個很重要的技術,下面是自己使用的幾個緩存技術,記錄一下。
1.文件緩存(不多說了,這個)。
2.Memcached 是一個高性能的分布式內存對象緩存系統,用於動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提高動態、數據庫驅動網站的速度。Memcached基於一個存儲鍵/值對的hashmap。其守護進程(daemon )是用C寫的,但是客戶端可以用任何語言來編寫,並通過memcached協議與守護進程通信,php有memcached擴展,安裝好了即可使用。
// 初始化 $cache = new Memcache(); $cache->pconnect(CACHE_HOSTNAME, CACHE_PORT); // 寫入 $cache->set(CACHE_PREFIX . $key, $value, MEMCACHE_COMPRESSED, $expire);(CACHE_PREFIX 為了避免命名沖突,最好加一個前綴,MEMCACHE_COMPRESSED一個標記,設置為0表示不壓縮) // 讀取 $cache->get(CACHE_PREFIX . $key); // 刪除 $cache->delete(CACHE_PREFIX . $key);
3.Redis是一個開源的使用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);
4.APC
Alternative PHP Cache (APC) 是一個開放自由的PHP opcode 緩存。它的目標是提供一個自由、 開放,和健全的框架用於緩存和優化PHP的中間代碼。
這個試了半天沒成功,windows一開啟就報錯,記下以后再試。
php內置的,無需類似上面兩種去連接初始化什么的。
// 寫入 apc_store(CACHE_PREFIX . $key, $value, $expire); // 讀取 apc_fetch(CACHE_PREFIX . $key); // 刪除 apc_delete(CACHE_PREFIX . $key);
相對第四個貌似是最簡單的,但是好像配置不好配,網上找了半天沒找到解決方案。