Discuz开启redis缓存并指定数据库来解决冲突

在我们使用redis作为discuz的缓存时,体验到了速度的提升。但是,当我们有两个以上的网站都使用同一个redis server开启缓存时,就存在冲突了,因为默认的情况下,discuz使用第一个库,也就是redis的db0作为数据存储的库的。

我们只需要做简单的改造就可以优雅的解决这个问题,开始:

1、开启Redis并增加配置项:

打开:config/config_global.php,Redis服务器地址如果在别的机器,请填写机器的IP地址,如果是本机就是127.0.0.1

在$_config[‘memory’][‘redis’][‘serializer’] = 1;的下一行添加一行:$_config[‘memory’][‘redis’][‘db’] = 1; 其中1就是你选的DB编号了。

2.修改代码文件,让discuz支持db参数:
打开source/class/memory/memory_driver_redis.php:找到$this->obj->setOption(Redis::OPT_SERIALIZER, $config[‘serializer’]);在下一行增加DB选择的代码:

$this->select($config[‘db’]);

3.找到clear()函数,把flushAll操作改为flushDb操作,因为我们的redis不是专门给一个网站用的,flushAll是把redis全部数据都清了(flushdb是把本db清了),这段代码是谁写的,我也是服了。。。

到这里就算是大功告成了。看下效果:

嗯,都写到规定的数据库里了,哎呀,干净了。

发表回复