2019独角兽企业重金招聘Python工程师标准>>>
项目中CI缓存适配器的使用
项目中有若干控制器,这些控制器有一些公共数据,因此,在基控制器类中获取这些数据,为了提高系统性能,使用了缓存系统,采用了CI框架提供的缓存适配器来提供缓存数据的设置与获取。
1.在基类的构造方法中加载CI的缓存适配器
//加载cache适配器$this->load->driver('cache', array('adapter' => 'file'));
第一个参数是加载适配器类型,此处是缓存适配器;第二个参数是数组形式,adapter=>file表示指定文件作为缓存的实现。(也可以指定其它缓存实现,比如apc)
2.在基类的构造方法中加载所有缓存数据,系统中封装了getCommCache()方法,在该方法中,从缓存中获取所有子控制器需要使用的公共数据,代码如下:
public function getCommCache(){//获取导航数据if($this->getCache('nav')) //如果缓存数据存在{//从缓存中获取数据$this->nav = $this->getCache('nav');}else //缓存数据不存在{//从数据库获取数据$this->load->model('Mhead');$this->nav=$this->Mhead->get_head();//将该数据设置到缓存$this->setCache('nav',$this->nav,10);//三个小时}。。。。。(其它数据设置与获取类似)}
以上代码中getCache、setCache方法是对CI缓存适配器方法的封装,如下:
public function setCache($id,$data,$time=null){$this->cache->save($id, $data, $time);}public function getCache($id){return $this->cache->get($id);}
其中,有关的几个缓存适配器的方法为:
(1)设置数据到缓存系统中:
$this->cache->save('cache_item_id[string]', 'data_to_cache[mix]',[time[int]]);
第一个参数为缓存数据名,第二个参数为需要缓存的数据,第三个参数可选,是缓存有效时间默认60秒。例如,需要将某段字符串作为缓存数据:
$data = "this is the common text";$this->cache->save('commText',$data,60);
(2)从缓存中获取数据:
$foo = $this->cache->get('my_cached_item');
参数为设置缓存时的ID,返回值就是获取到的缓存数据:
$Text = $this->cache->get('commText');
除此之外,还包括删除某个缓存数据:$this->cache->delete('cache_item_id');清空所有缓存:$this->cache->clean()等等。
暂时这么多,以后再补充。。。