ThinkPHP支持文件方式、共享內存方式和數據庫方式等緩存方式。
由於ThinkPHP支持多種緩存,因此在使用以前緩存的方式和參數進行配置。php
緩存方式
File、Apachenote、Apc、Eaccelerator、Memcache、Shmop、Sqlite、Db、Redis和Xcache數據庫
緩存參數
根據不一樣的緩存方式存在不一樣的參數緩存
通用緩存參數
expire 緩存有效期(默認由DATA_CACHE_TIME參數配置)
length 緩存隊列長度(默認爲0)
queue 緩存隊列方式(默認爲file 還支持xcache和apc)服務器
Memcachetcp
host 緩存服務器地址( 默認爲127.0.0.1)
port 端口(默認爲MEMCACHE_PORT參數或者11211)
timeout 緩存超時(默認由DATA_CACHE_TIME參數設置)
persistent 長鏈接(默認爲false)post
File(文件緩存)性能
temp 緩存目錄(默認由DATA_CACHE_PATH參數配置)spa
獲取緩存實例
1. 使用配置文件方式(推薦)
config.phpcode
//緩存方式 'DATA_CACHE_TYPE' =>
'Memcache',
//v\ 緩存服務器地址 'MEMCACHE_HOST' =>
'tcp://127.0.0.1:11211',
//指定默認的緩存時長爲3600 秒,沒有會出錯 'DATA_CACHE_TIME' =>
'3600',
//獲取緩存實例 $cache = Cache::getInstance();
2.使用代碼的形式獲取
$Cache = Cache::getInstance(
'緩存方式',
'緩存參數')
$Cache = Cache::getInstance(
'Memcache',
array(
'host'=>'127.0.0.1',
'port'=>11211)));
$Cache->setOptions(
'expire',
3600);
$Cache->setOptions(
'persistent',
true);
存取緩存數據
緩存實例對象,快捷緩存方式orm
1.經過緩存實例對象進行操做
$Cache->set(
'name',
'ThinkPHP');
// 緩存name數據 $value = $Cache->get(
'name');
// 獲取緩存的name數據 $Cache->rm(
'name');
// 刪除緩存的name數據
or
$Cache->name
= 'ThinkPHP';
$value = $Cache->name; Unset(
$Cache->name);
2. 快捷緩存方式
使用快捷緩存方式,要求必須已經配置緩存方式
爲了進一步簡化緩存存取操做,ThinkPHP把全部的緩存機制統一成一個S方法來進行操做,因此在使用不一樣的緩存方式的時候並不須要關注具體的緩存細節。
S方法
// 使用data標識緩存$Data數據 S(
'data',
$Data);
// 緩存$Data數據3600秒 S(
'data',
$Data,
3600);
// 獲取緩存數據 $Data = S(
'data');
// 刪除緩存數據 S(
'data',
NULL);
cache方法
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
$cache = cache(
array(
'type'=>'xcache',
'expire'=>60));
$cache->set(
'name',
$value);
$cache->get(
'name');
$cache->rm(
'name');
or $cache = cache(
array(
'type'=>'xcache',
'expire'=>60));
$cache->name
= $value; echo
$cache->name; unset(
$cache->name);
數據庫緩存
1. 數據庫查詢緩存
對於及時性要求不高的數據查詢,咱們可使用查詢緩存功能來提升性能,並且無需本身使用緩存方法進行緩存和獲取。
$Model->cache(
true)
->select();
$Model->cache(
'cache_name',
60)
->select();
2. SQL解析緩存
由於ThinkPHP的ORM機制,全部的SQL都是動態生成的,而後由數據庫驅動執行。
因此若是你的應用有大量的SQL查詢需求,那麼能夠開啓SQL解析緩存以減小SQL解析提升性能。
'DB_SQL_BUILD_QUEUE' =>
'xcache',