GG资源网

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

大家好,这里是关于[WordPress使用Redis多站数据共存],[玩转WordPress上的数据库缓存插件Redis Object Cache]问题的解答,希望对您有所帮助。如果你还想了解更多这方面的信息,请关注本站其他相关内容,共同学习吧!

WordPress使用Redis多站数据共存

教程大全redis,wordpress,WordPress插件

经常使用WordPress并且多个站点的用户,使用redis缓存数据库时应该都遇到过多个站数据冲突的问题。

此问题官方有很多种处理方法。下面说下多站同时使用redis常用的几个方式。

1.创建WordPress站点时修改数据库前缀

我们WordPress在安装时有一步时创建数据库,其中默认数据库前缀是:wp_

我们可以随便更改一下字符比如改为xxx_

这样数据在缓存时各个库之间就不会出现数据冲突的问题了。这也是最建议的方式,我们以后创建站点建议都更改掉默认的数据库前缀。

2.在wp-config.php配置文件中修改相关常量

wp-config.php配置文件是我们经常修改的一个文件。本站发过很多再wp-config.php文件中添加或删除各种功能的代码。

此种方式适合已经创建的站点,不适合再操作数据库的情况。

此方式来源于官方文档:

https://github.com/rhubarbgroup/redis-cache/wiki/Connection-Parameters

默认情况下,对象缓存插件将通过 TCP 连接到 Redis 127.0.0.1:6379并选择 database 0库。

要调整连接参数,可以在wp-config.php文件中定义以下任何常量。

define( \'WP_REDIS_HOST\', \'127.0.0.1\' );
define( \'WP_REDIS_PORT\', 6379 );
// define( \'WP_REDIS_PASSWORD\', \'secret\' );
define( \'WP_REDIS_TIMEOUT\', 1 );
define( \'WP_REDIS_READ_TIMEOUT\', 1 );

// change the database for each site to avoid cache collisions
define( \'WP_REDIS_DATABASE\', 0 );

// supported clients: phpredis, credis, predis and hhvm
// define( \'WP_REDIS_CLIENT\', \'phpredis\' );

// automatically delete cache keys after 7 days
// define( \'WP_REDIS_MAXTTL\', 60 * 60 * 24 * 7 );

// bypass the object cache, useful for debugging
// define( \'WP_REDIS_DISABLED\', true );

其中define( 'WP_REDIS_DATABASE’, 0 );这里后面的数值0就是更改redis库的参数。redis默认是16个库,各个站设为不同值即可,比如改成1或者2、3、4、5、6等等。

其他设置项的解释(来自谷歌翻译):

WP_REDIS_SCHEME(默认值:tcp)
指定用于与 Redis 实例通信的协议。在内部,客户端使用与指定连接方案关联的连接类。支持tcp(TCP/IP)、unix(UNIX 域套接字)、tls(传输层安全)或http(通过 Webdis 的 HTTP 协议)。

WP_REDIS_HOST(默认值:127.0.0.1)
目标服务器的 IP 或主机名。当使用 UNIX 域套接字连接到 Redis 时,这将被忽略。

WP_REDIS_PORT(默认值:6379)
目标服务器的 TCP/IP 端口。当使用 UNIX 域套接字连接到 Redis 时,这将被忽略。

WP_REDIS_PATH(默认:未设置)
使用 UNIX 域套接字连接到 Redis 时使用的 UNIX 域套接字文件的路径。

WP_REDIS_DATABASE(默认值:0)
接受用于通过SELECT命令自动选择逻辑数据库的数值。

WP_REDIS_PASSWORD(默认:未设置)
接受一个值,该值用于通过AUTH命令向受密码保护的 Redis 服务器进行身份验证。

要使用 Redis 6 的 ACL,请将其设置为[\'username\', \'password\']数组(需要 PhpRedis 5.3+)。

WP_REDIS_TIMEOUT(默认值:5)
在失败之前尝试初始连接到 Redis 服务器的时间(以秒为单位)(允许几分之一秒)。

WP_REDIS_READ_TIMEOUT(默认值:5)
在失败之前尝试从 Redis 服务器读取的时间(以秒为单位)(允许几分之一秒)。

WP_REDIS_RETRY_INTERVAL(默认:未设置)
重试失败的连接尝试的时间(以毫秒为单位)。

3.更改redis缓存插件配置文件

这里以Redis Object Cache缓存插件为例。

此插件在服务器上得文件目录为/wp-content/plugins/redis-cache/

在其includes目录下有个object-cache.php文件,修改它即可。

大致在546行,更改database值即可,默认值为0

保存文件后重新启动Redis Object Cache缓存插件。

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

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

由于网站搬家,部分链接失效,如无法下载,请联系站长!谢谢支持!
1. 带 [亲测] 说明源码已经被站长亲测过!
2. 下载后的源码请在24小时内删除,仅供学习用途!
3. 分享目的仅供大家学习和交流,请不要用于商业用途!
4. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
5. 本站所有资源来源于站长上传和网络,如有侵权请邮件联系站长!
6. 没带 [亲测] 代表站长时间紧促,站长会保持每天更新 [亲测] 源码 !
7. 盗版ripro用户购买ripro美化无担保,若设置不成功/不生效我们不支持退款!
8. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
9. 如果你也有好源码或者教程,可以到审核区发布,分享有金币奖励和额外收入!
10.如果您购买了某个产品,而我们还没来得及更新,请联系站长或留言催更,谢谢理解 !
GG资源网 » 玩转WordPress上的数据库缓存插件Redis Object Cache

发表回复

CAPTCHAis initialing...