thinkphp缓存技术
thinkphp对缓存技术提供了极大的支持。memcache是我们最常用到的缓存技术。
thinkphp关于缓存配置:
静态缓存配置
HTML_FILE_SUFFIX= '.shtml'
默认静态文件后缀
HTML_CACHE_ON = false
默认关闭静态缓存
HTML_CACHE_TIME= 60
静态缓存有效期
HTML_READ_TYPE= 1
静态缓存读取方式0 readfile 1 redirect
数据缓存配置
DATA_CACHE_TYPE= 'File'
数据缓存类型支持File Db Apc Memcache Shmop Sqlite Xcache Apachenote Eaccelerator
DATA_CACHE_PATH = TEMP_PATH
缓存路径设置(仅对File方式缓存有效)
DATA_CACHE_TIME= -1
数据缓存有效期
DATA_CACHE_COMPRESS= false
数据缓存是否压缩缓存
DATA_CACHE_CHECK= false
数据缓存是否校验缓存
DATA_CACHE_SUBDIR= false
使用子目录缓存(自动根据缓存标识的哈希创建子目录)
DATA_PATH_LEVEL = 1
子目录缓存级别
那么在thinkphp中如何用到memcache呢?
1. 查看官方手册。
所有的缓存方式都被统一使用公共的调用接口,这个接口就是Cache缓存类。
缓存类的使用很简单:
$Cache = Cache::getInstance('缓存方式','缓存参数');
例如,使用Xcache作为缓存方式,缓存有效期60秒。
$Cache = Cache::getInstance('Xcache',array('expire'=>'60'));
存取缓存数据
$Cache->set('name','ThinkPHP'); // 缓存name数据
$value = $Cache->get('name'); // 获取缓存的name数据
$Cache->rm('name'); // 删除缓存的name数据
如果使用memcached时。要在配置文件config.php中增加。修改配置文件config.php文件,在配置文件中加入:
'DATA_CACHE_TYPE' => 'Memcache', //默认是file方式进行缓存的,修改为memcache
'MEMCACHE_HOST' => ' tcp://127.0.0.1:11211', //memcache服务器地址和端口,这里为本机。
'DATA_CACHE_TIME' => '10', //过期的秒数。
通过以上方法连接服务器后,再用代码进行处理,发现可以用了。
class CacheAction extends Action{
//缓存类
function index() {
$cache = Cache::getInstance(); //修改config.php文件后,里面就不需要填参数了,直接调用,实例化。
$cache->set("name","thinkphp");
$value = $cache->get("name");
var_dump($cache);
if($value){
dump($value);
}else{
//执行SQL语句
}
}
}
2 . S( )方法。
在官方手册中,提供了一种便捷的缓存方式S( ):
S("data","123456",10);
$data = S('data');
var_dump($data);
结果也是正确的。但是注意的是:这种方式默认是采用file文件方式来缓存。直接这样输出也是可以得到结果的。要想采用memcache进行缓存。也一样在cofig.php加上:
'DATA_CACHE_TYPE' => 'Memcache', //默认是file方式进行缓存的,修改为memcache
'MEMCACHE_HOST' => ' tcp://127.0.0.1:11211', //memcache服务器地址和端口,这里为本机。
'DATA_CACHE_TIME' => '10', //过期的秒数。
那么就变成用memcache来存储缓存了。 那么我推荐:在config.php配置文件中设定好,用S ( )方法来存储和读取。更高效。dedecms教程