yii2 緩存
1、Yii框架的缓存
主要就是“memcache” 和 “cache”两种
Yii的自带缓存都继承CCache 类, 在使用上基本没有区别
2、使用方法
(1)在config配置文件main.php文件中配置如下代码
'cache' => array (
'class' => 'system.caching.CFileCache',
'directoryLevel'=>'2',
),
'memcache' => array(
'class'=>'system.caching.CMemCache',
'servers'=>array(
array('host'=>'localhost', 'port'=>11211, 'weight'=>60),
),
)
(2)“memcache”的使用方法
缓存基础类 CCache 提供了两个最常用的方法:set() 和 get()方法;
将$value这个变量中的值进行缓存,需要写入到一个变量中
书写方式:
Yii::app()->memcache ->set($key, $value, $expire); //写入缓存变量$key中 $expire=30
Yii::app()->memcache ->get($key); //得到缓存变量$key
Yii::app()->memcache ->deleteValue($key); //删除缓存变量 $key
$menus = Yii::app()->memcache->get('menus');
if($menus === false){
$menus = EnNewsType::model()->findAllByAttributes(array(),array('condition'=>'type_id != 6 and status=1','order'=>'update_time DESC'));
Yii::app()->memcache->set('menus',$menus,$defult_cache); //$defult_cache = 15*60;
}
(3)“cache"的使用方法
$value=Yii::app()->cache->get($id);
if($value===false) {
//因为在缓存中没找到,重新生成 $value
//Yii::app()->cache->set($id,$value,30);
}
说明:1、缓存的变量选择 ID 时,确保该 ID 在应用中是唯一的;
2、要从缓存中删除一个缓存值,调用 delete();
3、要清空所有缓存,调用 flush(); //调用 flush() 时要非常小心,因为它会把其它应用的缓存也清空。
(因为 CCache 实现了 ArrayAccess 接口,可以像数组一样使用缓存组件)
- $cache=Yii::app()->cache;
- $cache['var1']=$value1; // 相当于: $cache->set('var1',$value1);
- $value2=$cache['var2']; // 相当于: $value2=$cache->get('var2');