请选择 进入手机版 | 继续访问电脑版
查看: 107|回复: 0

[discuz] Discuz开启redis缓存并指定数据库来解决多站冲突

[复制链接]
  • TA的每日心情
    难过
    4 天前
  • 16

    主题

    17

    帖子

    159

    积分

    管理员

    Rank: 80Rank: 80Rank: 80Rank: 80Rank: 80

    威望
    0
    技术币
    106
    在线时间
    19 小时
    注册时间
    2020-2-4
    最后登录
    2020-9-26
    QQ
    发表于 2020-9-14 12:49:02 | 显示全部楼层 |阅读模式
    在我们使用redis作为discuz的缓存时,体验到了速度的提升。但是,当我们有两个以上的网站都使用同一个redis server开启缓存时,就存在冲突了,因为默认的情况下,discuz使用第一个库,也就是redis的db0作为数据存储的库的。
    我们只需要做简单的改造就可以优雅的解决这个问题,开始:
    1、开启Redis并增加配置项:
    打开:config/config_global.php,Redis服务器地址如果在别的机器,请填写机器的IP地址,如果是本机就是127.0.0.1
    1. $_config['memory']['redis']['serializer'] = 1;
    复制代码
    的下一行添加一行:
    1. $_config['memory']['redis']['db'] = 1;
    复制代码
    其中1就是你选的DB编号了。
    2.修改代码文件,让discuz支持db参数:
    打开
    source/class/memory/memory_driver_redis.php:
    找到
    1. @$this->obj->setOption(Redis::OPT_SERIALIZER, $config['serializer']);
    复制代码
    在下一行增加DB选择的代码:
    1. $this->select($config['db']);
    复制代码
    3.找到clear()函数
    1. function clear() {
    复制代码
    把flushAll操作改为flushDb操作,因为我们的redis不是专门给一个网站用的,flushAll是把redis全部数据都清了(flushdb是把本db清了),这段代码是谁写的,我也是服了。。。
    到这里就算是大功告成了。
    嗯,都写到规定的数据库里了,哎呀,干净了。

    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 会员注册

    本版积分规则