继承AR类 重写 findByPk方法为pk 还有afterSave afterDelete
通过对象主键缓存其属性 在insert update delete 操作时候 都会自动更新缓存
还是挺方便的
public function afterDelete(){
$cache=$this->getCache();
$cache->cdelete($this->cacheGroup(),$this->getPKValue());
parent::afterDelete();
}
public function cacheGroup(){
return $this->tableName();
}
public function pk($value){
$attr=$this->getCache()->cget($this->cacheGroup(),$value);
if(!$attr){
$model= $this->findByPk($value);
if($model){
$attr=$model->getAttributes();
}
$this->getCache()->cset($this->cacheGroup(),$value,$attr=!empty($attr)?$attr:MMemcache::NULL_VAR);
}elseif(MMemcache::isNULL($attr)){
$model=null;
}else{
$model=$this->populateRecord($attr);
}
return $model;
}
public function afterSave(){
$cache=$this->getCache();
$cache->cdelete($this->cacheGroup(),$this->getPKValue());
if($this->getIsNewRecord()){
$cache->cadd($this->tableName(),$this->getPKValue(),$this->getAttributes());
}else{
$cache->cadd($this->tableName(),$this->getPKValue(),$this->getAttributes());
}
parent::afterSave();
}
MMemcache 自己的情况实现
大家有好思路 多分享哦 这样Yii才会越来越强大