内存级缓存
缓存层的引入是为了解决MYSQL自身对高并发处理的性能瓶颈,目前缓存层采用主流的Key-Value对形式。内存级的缓存产品很多, 目前DzzOffice支持的内存优化接口有 Memcache、eAccelerator、Alternative PHP Cache(APC)、Xcache、Redis 五种,系统将会依据当前服务器环境依次选用接口,单服务器环境中推荐使用APC,多服务器环境中推荐使用Redis或Memcache。
可以通过配置./core/config/config.php来开启缓存,配置项如下:
$_config['memory']['prefix'] = 'dzzoffice_';
$_config['memory']['redis']['server'] = ''; // redis 服务器地址
$_config['memory']['redis']['port'] = 6379; // redis 服务器端口
$_config['memory']['redis']['pconnect'] = 1; // redis 是否长久连接
$_config['memory']['redis']['timeout'] = 0; // redis 服务器连接超时
$_config['memory']['redis']['serializer'] = 1; // redis::SERIALIZER选项
$_config['memory']['memcache']['server'] = ''; // memcache 服务器地址
$_config['memory']['memcache']['port'] = 11211; // memcache 服务器端口
$_config['memory']['memcache']['pconnect'] = 1; // memcache 是否长久连接
$_config['memory']['memcache']['timeout'] = 1; // memcache 服务器连接超时
$_config['memory']['apc'] = 0; // 启动对 apc 的支持
$_config['memory']['xcache'] = 0; // 启动对 xcache 的支持
$_config['memory']['eaccelerator'] = 0; // 启动对 eaccelerator 的支持
数据层是以表为单位的类文件,所有表类都继承dzz_table基类,基类实现缓存操 作的相关函数。理论上所有的数据表均可以缓存。
dzz_table基类中缓存机制的实现
protected $_pre_cache_key; //缓存主键名前缀,为空时表示此表不支持缓存 protected $_cache_ttl; //缓存时间,以秒为单位,0表示永久或相关配置文件中的默认值
dzz_table基类中缓存机制的方法
//缓存一个变量到缓存中,如果 KEY已经在则会被覆盖为新值//获取指定KEY的缓存数据//清除指定KEY的缓存//更新一个已经存在的KEY,只更新修改的字段//批量更新缓存,只更新已经存在KEY的指定修改的字段//重置已经存在的KEY的值//累加缓存数据中某字段的值
数据表类中增加下面的参数来启用缓存
//例如: public function __construct() { $this->_table = 'app_open'; $this->_pk = 'extid'; $this->_pre_cache_key = 'app_open_'; //缓存主键名前缀,为空时表示此表不支持缓存 $this->_cache_ttl =0; //缓存时间,以秒为单位,0表示永久或相关配置文件中的默认值 parent::__construct(); }
更多建议: