玩转WordPress上的数据库缓存插件Redis Object Cache

发表于 2020-08-15  8.65k 次阅读


文章目录

为了提升网站速度,降低MySQL的负载,通常都需要将数据缓存到内存中,常用的就是memcached、redis,但是相对来说Redis更符合需求,可以支持非常复杂的数据类型,而且也更通用。于是我就选择了Redis,而WordPress上最好的redis缓存插件就是Redis Object Cache了,直接在“插件>安装插件”搜索名称安装即可。

Redis如何通过命令行搭建我暂且不谈,因为宝塔可以直接安装redis,如果你Redis都是一台机子的话,安装之后可以到php那里装redis插件,这个php的redis插件是给你缓存session用的。

一般来讲,安装插件后,直接点那个Enable Object Cach,就可以跑了。

那么问题来了,假如有的小伙伴有钱,有多台服务器怎么办呢?

啊这...虽然我穷的一批,买服务器都只能天天蹭优惠,每台服务器都不在一个机房,但是我测试了一下,还是可以使用的。

虽然Redis Object Cache的控制页面没给我们出选择题和填空题,但是我们可以直接把卷子改了。

有两种方法:

第一种:爷直接去wp-config.php改

在这个PHP文件的最后,添加如下代码:

// Redis Object Cache真麻烦嘤嘤嘤
define('WP_REDIS_HOST',['127.0.0.1','192.168.0.6']);
define('WP_REDIS_SERVERS', [
'tcp://127.0.0.1:6379?database=6&alias=master',
'tcp://192.168.0.6:6379?database=6&alias=slave-01',
]);

当然,这个可以连多个redis主机,不过这里需要注意WP_REDIS_SERVERS的alias的两个名词必须是master和slave-01这种形式。

第二种:玄学问题的究极解决方法

第一种方法我是真没搞懂为什么在我常用的服务器上不行,但是拿到我闲置得沾灰的服务器上却可以,估计是php本身的redis扩展的问题,也有可能是别的问题。

由于Enable Object Cach的时候,系统会将
/wp-content/plugins/redis-cache/includes/ 插件目录下的 object-cache.php 文件复制到/wp-content/目录下,所以启用之前在这个php文件改下代码,大概这段代码长这样:

$parameters = array(
 'scheme' => 'tcp',
 'host' => '127.0.0.1',
 'port' => 6379,
 'database' => 0,
 'password' => '123',
 'timeout' => 1,
 'read_timeout' => 1,
 'retry_interval' => null,
 );

请注意了,这个插件的文件夹根目录有一个叫object-cache.php的玩意,眼睛别看错了,然后傻乎乎的跑过来跟我说我配置失败了你能帮帮我吗?我只帮老奶奶过马路,你要是问这种问题就给我一边凉快去。

关于host那里的多值的php写法应该是支持的,但是我忘了怎么写了(实际上是懒得测试),另外如果要改object-cache.php里面的东西,记得把插件先关了,把wp-content目录下的副本删了,再在原插件里面改,再去启用。

另外,为了防止某些二货的插件自动升级了,配置失效了,找到我对我说你能帮帮我吗,所以我建议最后记得在wp里面把插件自动更新关了,关闭自动更新关闭代码如下:

function remove_update_notifications( $value ) {
    if ( isset( $value ) && is_object( $value ) ) {
	unset( $value->response[ 'redis-cache/object-cache.php' ] );
    }
    return $value;
}

这里的redis-cache是插件目录名,object-cache.php是主文件名,如果有这几行代码,如果要禁用其他的插件自动更新,直接用unset那行代码复制并改一下往下面加。

总结

wp配置redis还是很简单的,不过如果redis没password就留空或者直接把代码删了。


纵使代码万千行