数据缓存
框架这边针对pk键值索引
数据可以通过继承baseDAO
进行缓存操作,默认为关闭
,可在DAO中定义$_pkCache = true
来开启
然后需要在DAO中制定表键值,复合索引需要传数组
,例如:['id', 'type']
因为系统缓存默认走redis
,所以开启缓存的话,需要在/app/config/dns_xxx.php
中配置环境相应的redis配置
// testDAO namespace app\dao;class testDAOextends baseDAO- {
protected $dbConfig = ['database' ,'slaveDb' ];protected $table ='Biny_Test' ;// 表pk字段 复合pk为数组 ['id', 'type'] protected $_pk ='id' ;// 开启pk缓存 protected $_pkCache =true ;- }
baseDAO
中提供了getByPk
,updateByPk
,deleteByPk
方法, 当$_pkCache
参数为true
时,数据会走缓存,加快数据读取速度。
getByPk
读取键值数据,返回一维数组数据
//参数为pk值 返回 ['id'=>10, 'name'=>'test', 'time'=>1461845038] $data =$this ->testDAO ->getByPk (10);//复合pk需要传数组 $data =$this ->userDAO ->getByPk (array (10,'test' ));
updateByPk
更新单条数据
//参数为pk值,update数组,返回true/false $result =$this ->testDAO ->updateByPk (10,array ('name' =>'test' ));
deleteByPk
删除单条数据
//参数为pk值,返回true/false $result =$this ->testDAO ->deleteByPk (10);
注意:
开启$_pkCache
的DAO不允许再使用update
和delete
方法,这样会导致缓存与数据不同步的现象。
如果该表频繁删改数据,建议关闭$_pkCache
字段,或者在删改数据后调用clearCache()
方法来清除缓存内容,从而与数据库内容保持同步。