discuz教程
Discuz!使用Redis缓存多站点分库和避免清空所有的数据的解决方案
Discuz!内存级缓存介绍N5N
缓存层的引入是为了解决MYSQL自身对高并发处理的性能瓶颈,目前产品缓存层采用主流的Key-Value对形式,内存级的缓存产品很多,支持的内存优化接口有 Memcache、eAccelerator、Alternative PHP Cache(APC)、Xcache、Redis 五种,优化系统将会依据当前服务器环境依次选用接口,单服务器环境中推荐使用APC,多服务器环境中推荐使用Redis或Memcache。N5N
现存问题说明N5N
有不少站长在一个服务器上安装多个站点,且同时使用Redis作为缓存过程中发现,当使用后台->全局->性能优化->内存优化->内存清理,会把redis缓存的全部站点的内容都清空。N5N
N5N
原来是因为Discuz!在实现的时候没用使用Redis的分库功能,全部站点的缓存都是放在db0中,好在Discuz!源码中已经做好了分库选择,只需要很少的改动进达到我们分库的要求了。N5N
改进方案N5N
具体实现如下:N5N
1、修改文件config\config_global.phpN5N
在$_config['memory']['redis']['serializer'] = 1;下方增加一行N5N
$_config['memory']['redis']['db'] = 1;//这里可以填写0到15的数字,每个站点使用不同的,redis默认是16个库,也可以增加库N5N
2、修改文件source\class\memory\memory_driver_redis.phpN5N
在 @$this->obj->setOption(Redis::OPT_SERIALIZER, $config['serializer']); 下方加上一行N5N
$this->select($config['db']);N5N
3、将flushAll改成flushdb避免后台清理影响全部站点;N5N
function clear() {N5N
return $this->obj->flushAll();N5N
}N5N
改成N5N
function clear() {N5N
return $this->obj->flushdb();N5N
}N5N
-
01Discuz! 手机版导读热贴(最新热门)不显示问题的解决方法 1978
-
02Discuz!x3.4 禁止游客访问个人资料页 1863
-
03Discuz解决积分充值报错:This XML file does not appear 的解决方法 1774
-
04解决Discuz! 手机触屏版外链图片不显示问题 1705
-
05Discuz!x3.4 防采集固定版权干扰码 1133