为了提升网站速度,降低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真麻烦嘤// 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就留空或者直接把代码删了。