数据缓存

框架这边针对pk键值索引数据可以通过继承baseDAO进行缓存操作,默认为关闭,可在DAO中定义$_pkCache = true来开启

然后需要在DAO中制定表键值,复合索引需要传数组,例如:['id', 'type']

因为系统缓存默认走redis,所以开启缓存的话,需要在/app/config/dns_xxx.php中配置环境相应的redis配置

  1. // testDAO
  2. namespace app\dao;
  3. class testDAO extends baseDAO
  4. {
  5. protected $dbConfig = ['database', 'slaveDb'];
  6. protected $table = 'Biny_Test';
  7. // 表pk字段 复合pk为数组 ['id', 'type']
  8. protected $_pk = 'id';
  9. // 开启pk缓存
  10. protected $_pkCache = true;
  11. }

baseDAO中提供了getByPkupdateByPkdeleteByPk方法, 当$_pkCache参数为true时,数据会走缓存,加快数据读取速度。

getByPk 读取键值数据,返回一维数组数据

  1. //参数为pk值 返回 ['id'=>10, 'name'=>'test', 'time'=>1461845038]
  2. $data = $this->testDAO->getByPk(10);
  3.  
  4. //复合pk需要传数组
  5. $data = $this->userDAO->getByPk(array(10, 'test'));

updateByPk 更新单条数据

  1. //参数为pk值,update数组,返回true/false
  2. $result = $this->testDAO->updateByPk(10, array('name'=>'test'));

deleteByPk 删除单条数据

  1. //参数为pk值,返回true/false
  2. $result = $this->testDAO->deleteByPk(10);

注意:开启$_pkCache的DAO不允许再使用updatedelete方法,这样会导致缓存与数据不同步的现象。

如果该表频繁删改数据,建议关闭$_pkCache字段,或者在删改数据后调用clearCache()方法来清除缓存内容,从而与数据库内容保持同步。