打造 带有缓存功能的AR

继承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才会越来越强大

赞!

非常实用

牛人!

不错!

但是这个缓存用什么方式比较好呢?

FILE MEM????

嗯。楼主V5.学习了

我能说不好吗。不错呀!

很不错呀,收益匪浅,貌似Yii cache一些guide(中文)介绍的不是很全啊????