12.4 快捷缓存

为了进一步简化缓存存取操作,ThinkPHP把所有的缓存机制统一成一个S方法来进行操作,所以在使用不同的缓存方式的时候并不需要关注具体的缓存细节。(如果是3.1版本以上,建议用新增的cache方法替代S方法)例如: // 使用data标识缓存$Data数据
S('data',$Data);
// 缓存$Data数据3600秒
S('data',$Data,3600);
// 获取缓存数据
$Data = S('data');
// 删除缓存数据
S('data',NULL);
系统默认的缓存方式是采用File方式缓存,我们可以在项目配置文件里面定义其他的缓存方式,例如,修改默认的缓存方式为Xcache(当然,你的环境需要支持Xcache) 'DATA_CACHE_TYPE'=>'Xcache'通过上面的定义,相同的代码就会使用Xcache方式来缓存了,而事实上,代码并没有任何改变。
当然,我们还可以在S方法里面显式的指定缓存方式,例如 S('data',$Data,3600,'File');S方法还支持对当前的缓存方式传入缓存参数,例如:S('data',$Data,3600,'File',array('length'=>10,'temp'=>RUNTIME_PATH.'temp/'));对于File方式缓存下的缓存目录下面因为缓存数据过多而导致存在大量的文件问题,ThinkPHP也给出了解决方案,可以启用哈希子目录缓存的方式,只需要设置 'DATA_CACHE_SUBDIR'=>true还可以设置哈希目录的层次,例如:'DATA_PATH_LEVEL'=>2就可以根据缓存标识的哈希自动创建多层子目录来缓存。
为了更加方便的操作缓存,3.1版本新增了cache函数用以设置和操作缓存。
使用方法:
1 缓存初始化 cache(array('type'=>'xcache','expire'=>60));2 缓存设置 cache('a',$value);3 缓存读取 $value = cache('a');4 缓存删除 cache('a',null);需要使用不同的缓存方式的时候 需要重新初始化,如果不初始化直接调用的话,则会按照系统配置自动初始化。
初始化的返回值,可以直接操作缓存:$cache = cache(array('type'=>'xcache','expire'=>60));
$cache->set('name',$value);
$cache->get('name');
$cache->rm('name');
或者$cache = cache(array('type'=>'xcache','expire'=>60));
$cache->name = $value;
echo $cache->name;
unset($cache->name);