兄弟们今天遇到一个离奇的事情,我同一个服务器上的两个域名,新放的域名设置了Redis Object Cache插件打开后,网站无法访问了,且登录界面自动跳转到之前那个网站的登录网址。如果 Redis 没有正确配置,多个 WordPress 网站一起工作时,如果直接使用的话,就会出现打开 A 域名看到 B 网站内容的混乱情况,下面我们一起来看看多站点怎么配置 redis。
安装 Redis 扩展
在宝塔面板>软件商店,找到当前使用的 php 版本,老魏这个测试服务器有 php5.6/7.2/7.3/7.4 等多个版本,想知道当前网站用的哪个版本,只需要去宝塔面板>【网站】,点击域名打开【站点修改】>php 版本,看到的就是当前版本了。

找到 php 版本后定位到【软件商店】> php 版本,打开后点击【安装扩展】,找到并安装 redis,程序会自动部署好 redis 服务端。

添加 Redis 服务端密码(开不开自选)
从安全角度出发建议给 Redis 设置密码,保护数据不被入侵。当然不设置密码也能运行 Redis,请跳到下一步操作。
在安装好的 Redis 扩展 > 性能调整找到 requirepass,输入密码。密码可以是字母、数字或字母数字混合,位数大于 6 位,多一些更安全。

设置好密码后重启 Redis,好多同学设置完了不生效就是因为这一步没有做。
在 WordPress 网站根目录的 wp-config.php 文件中添加如下代码,用于验证 Redis 密码:
/**添加 Redis 密码 */
define(‘WP_REDIS_PASSWORD’, ‘你设置的密码’);
这段代码添加在数据库信息的下面,如下图所示:
仔细看宝塔的 Redis 密码和 wp-config.php 的密码要完全一样,否则不会生效。
wp-config.php 启用缓存设置
继续添加如下代码,代码的位置如下图,盐值(SALT)的下面空一行。
define( ‘WP_CACHE_KEY_SALT’, ‘你的域名’ );
define( ‘WP_CACHE’, true );
说明:Key_Salt 是网站的盐值,区分多个 WordPress 网站的唯一识别码。
安装 Redis 插件
在 WordPress 后台>插件>安装插件,搜索 Redis object cache,安装并启用。

Redis 生效状态
在 WordPress 后台左下角的设置>Redis,右侧看到 status:connnected,一共三行绿字提示,说明连接服务端成功,Redis 生效了。
当有人访问网页后,从宝塔面板>软件商店>Redis>负载状态中能看到当前 Redis 的执行结果,比如查找数据库命中率等等很多参数,命中率越大越好。

数据库优化说明
进一步优化数据库,在宝塔面板 > 软件商店 > MySql > 性能调整 > 优化方案根据服务器(vps)内存的大小选择(内存多大就选择多大)。
再把 MySQL 查询缓存(query_cache_size)设置为 0,这样就把被访问过的数据库内容都缓存到内存中,下次有人访问同一个页面直接返回内存的数据(不再读数据库),网站打开速度极快。

什么时候 query_cache_size 的数字可以不设置成 0 呢?
WordPress 没使用缓存,或很多非 WordPress 程序无法使用 Redis、memcached 这类缓存插件,如果数据库查询次数多、感觉网站打开慢时,就要开启查询缓存,开启后会读取缓存内容,比直接读取数据库更快。
Redis 与多个 WordPress 网站工作
Redis 与多个 WordPress 网站工作时需要经过一番设置,如果直接使用的话,会出现打开 A 域名看到 B 网站内容的混乱情况。
有以下几种办法可以解决,具体你自己测试哪个好用用哪个。
修改网站 Redis 盐值
在上面第四点中提到了 Key_Salt (网站盐值),在网站的 wp-config.php 文件中添加不同域名就能区分开。
define( ‘WP_CACHE_KEY_SALT’, ‘A 域名’ );
define( ‘WP_CACHE’, true );
保存后重启 Redis 服务,下面的操作也是一样。
设置 redis 数据库名
在网站 wp-config.php 文件中添加不同的数据库名
define(‘WP_REDIS_DATABASE’, 1);
也有人说上面这两个办法还是会让网站内容混乱,那么可以试试下面的办法。
修改 database 数值
从网站目录定位到 /wp-content/plugins/redis-cache/includes,打开 bobject-cache.php 文件,搜索 database。
修改后面的值,默认为 0 适用于第一个站点,第二个站点改成 1,第三个站点改成 2,以此类推。
