很多站长咨询,使用Redis加速WordPress效果好不好?Redis Object Cache Pro 插件如何配置?等等问题,这里希望通过本篇教程来回答大家关心的问题,以及帮助大家掌握Redis缓存插件的最佳使用方法。

这是专业插件,不建议新手安装使用,请详细阅读下方说明。


  • 插件需要 Redis 的支持,需要先在服务器中安装 Redis、PhpRedis v3.1.1或以上版本,PHP 版本 >= 7.2
  • 许可证:Zhanzhangb9sjJlBxBpLJbJcIRoi9rfszjmOqecMzQ1RB3K8jYQAOMkrCFDR

准备工作

在开始配置之前,确保你已经完成以下准备工作:

  1. 确认你的服务器上已成功安装和配置 Redis 。
  2. 安装并启用 Object Cache Pro 插件,该插件原名为:Redis Object Cache Pro,是WordPress 官方推荐的 Redis 缓存插件之专业版。

如果你还没有完成上述步骤,请先完成这些基本操作,然后继续阅读。

配置方案一:基本配置

首先,我们来看一下基本配置方案。这是一个适用于大多数站点的简单配置,可以在大多数情况下提供可观的性能改善。

define('WP_REDIS_CONFIG', [
    'token' => 'your-license-token',
    'host' => '127.0.0.1',
    'port' => 6379,
    'database' => 0, // 针对每个站点进行更改
    'maxttl' => 3600 * 24 * 7, // 7 天
    'timeout' => 1.0,
    'read_timeout' => 1.0,
    'prefetch' => true,
    'split_alloptions' => true,
    'strict' => true,
    'debug' => false,
]);

define('WP_REDIS_DISABLED', getenv('WP_REDIS_DISABLED') ?: false);

让我们逐一解释这些参数的作用:

  • 'token' => 'your-license-token':将 your-license-token 替换为你实际的许可证令牌
  • 'host' => '127.0.0.1':Redis服务器的主机地址。
  • 'port' => 6379:Redis服务器的端口号。
  • 'database' => 0:为每个站点更改数据库编号,以避免在多个站点上使用相同的数据库。
  • 'maxttl' => 3600 * 24 * 7:对象的最大过期时间,这里设置为7天。根据你的需求进行调整。
  • 'timeout' => 1.0 和 'read_timeout' => 1.0:连接Redis服务器的超时时间。
  • 'prefetch' => true:启用预取以提高性能。
  • 'split_alloptions' => truealloptions 键是否应该存储为散列。如果你的站点有大量的选项(如 WooCommerce、Elementor 等),启用此选项可能会提高性能。
  • 'strict' => true:启用严格模式以确保 Redis 插件与 WordPress 的预期行为一致。
  • 'debug' => false:在生产环境中应将调试关闭,以避免暴露敏感信息。

最后,'WP_REDIS_DISABLED', false 确保Redis缓存是启用的。如果需要临时禁用Redis缓存,你可以将其设置为 true

提示:配置代码需添加至 wp-config.php 文件中,并在 Object Cache Pro 插件中启用缓存即生效。

这是一个基本配置,适用于大多数 WordPress 站点。下面我们将看看更进一步的配置选项。

配置方案二:进阶配置

如果你希望更深入地定制你的Redis配置,可以考虑使用以下进阶配置方案。这个配置方案提供了更多参数,使你能够更精细地调整插件的行为。

define('WP_REDIS_CONFIG', [
    'token' => 'your-license-token',
    'host' => '127.0.0.1',
    'port' => 6379,
    'database' => 0, // 针对每个站点进行更改
    'timeout' => 0.5,
    'read_timeout' => 0.5,
    'retry_interval' => 100,
    'retries' => 3,
    'backoff' => 'smart',
    'compression' => 'zstd', // `zstd` 压缩更小,`lz4` 压缩更快
    'serializer' => 'igbinary',
    'async_flush' => true,
    'split_alloptions' => true,
    'prefetch' => true,
    'strict' => true,
    'debug' => false,
    'save_commands' => false,
]);

define('WP_REDIS_DISABLED', getenv('WP_REDIS_DISABLED') ?: false);

这个配置方案包含了一系列高级参数,让我们逐一了解它们的作用:

  • 'token' => 'your-license-token':将 your-license-token 替换为你实际的许可证令牌。
  • 'host' => '127.0.0.1':Redis服务器的主机地址。
  • 'port' => 6379:Redis服务器的端口号。
  • 'database' => 0:为每个站点更改数据库编号,以避免在多个站点上使用相同的数据库。
  • 'timeout' => 0.5 和 'read_timeout' => 0.5:连接Redis服务器的超时时间。
  • 'retry_interval' => 10 和 'retries' => 3:在连接失败时的重试设置。retry_interval 是重试间隔,单位毫秒;retries 是重试次数。
  • 'backoff' => 'smart':使用智能退避策略,更有效地重试连接。
  • 'compression' => 'zstd':选择压缩算法,如网站数据量较大,启用 zstd 可提供更高的压缩率。
  • 'serializer' => 'igbinary':选择序列化器,igbinary 通常比PHP默认的 serialize 更高效。
  • 'async_flush' => true:启用异步刷新以提高性能。
  • 'split_alloptions' => true:如果你的站点有大量的选项,启用此选项可能会提高性能。
  • 'prefetch' => true:启用预取以提高性能。
  • 'strict' => true:启用严格模式以确保 Redis 插件与 WordPress 的预期行为一致。
  • 'debug' => false:在生产环境中应将调试关闭,以避免暴露敏感信息。
  • 'save_commands' => false:将此选项设置为 false 可以避免在Redis中保存写入命令。

这个配置方案提供了更多的灵活性和控制权,但也需要更仔细的调整,确保符合你站点的特定需求。

 

Redis 是什么?

Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。

通常被称为数据结构服务器,因为值(value)可以是字符串(String)、哈希(Hash)、列表(list)、集合(sets)和有序集合(sorted sets)等类型。

Redis 通过内存存储数据集,实现最佳的性能,再定期将数据集转存到磁盘来持久化存储数据。这一点与 Memcached 不同,Memcached 仅在内存中存储,当服务器重启数据会消失。

Redis 连续 5 年被评为最受欢迎的数据库。

WordPress 为什么要使用 Redis 缓存?

在 WordPress 中,所有的内容都存储在MySql数据库中,通过PHP程序调用后才能呈现给前端用户。在未做页面静态化缓存的情况下,每次访问页面,都会执行PHP读取MySql数据库。

例如:几乎所有WordPress网站的页面中都会用到的wp_title()函数,它是用来输出页面标题的,这个函数在执行过程中就会读取几次数据库,例如:文章标题、标题后缀、页码等。

一个复杂的页面,可能会读取上百条数据库中的值,这会造成页面加载速度缓慢。当访问量较大的时候,MySQL数据库会负载很高,而且性能低下。

所以我们经常强调,WordPress 非常需要将网页静态化缓存。这样一来大幅降低了PHP的使用,对于已静态化缓存完成的网页是不需要读取数据库的。

但这个方案不能解决所有网站的性能问题,因为动态网页是不适合静态化缓存的,例如:包含用户登录状态的网页、需要与用户实时交互的网页、WooCommerce商城等。

这些动态网页最佳的性能优化方式就是,将需要频繁读取的MySql数据库中的值缓存起来,不用每次都读取MySQL数据库,特别是在内存中缓存效果更佳,因为内存比磁盘的读取效率高很多。Redis 与 Memcached 都是通过内存缓存的最佳选择。

使用了静态化缓存的网页还需要 Redis 缓存吗?

这个问题有很多站长咨询,但它没有统一答案。因为静态化缓存的方式有很多种,如果是直接生成的静态URL,也就是说这个静态URL路径中的静态文件是真实存在的,且不经常更新,前端访问时基本不使用PHP,这种情况下再使用Redis 缓存几乎没效果,仅在首次生成静态文件的时候提高了效率。例如Rocket-Nginx等。

另外一种常见的静态化缓存,则是使用缓存优化插件,这类插件会将网页绝大部分内容都静态化,前端依然通过PHP执行后调入静态缓存。另外静态缓存内容需要定期刷新,那么当访客访问网页或搜索引擎爬网时,有可能静态缓存已过期需要重建缓存,这种情况下使用 Redis 会有助于提升速度。

Redis Object Cache Pro 是 WordPress 最佳的 Redis 缓存插件

如果网站需要用 Redis 缓存的话,推荐 Redis Object Cache Pro ,因为它是截止到目前最佳的 WordPress 对象缓存插件。

插件还有一个基础版本:Redis Object Cache,它是免费的,但缺少一些高级功能与特性。

Redis Object Cache Pro 使用教程

使用前的准备工作

首先要有安装了 Redis 服务端的服务器,可以与网站WEB服务器在同一台主机。或者购买已经安装配置好的 Redis 云数据库,腾讯云阿里云等都有该类型产品。

安装 Redis

如何安装 Redis 取决于您的操作系统。请参阅下面最适合您需求的指南:

WEB服务器的环境要求

Redis Object Cache Pro 参数设置

插件在仪表板中没有任何配置选项,所有的参数配置均在wp-config.php配置文件中完成。它需要定义一个名称为’WP_REDIS_CONFIG’的常量,以下示例适用于大多数网站:

define('WP_REDIS_CONFIG', [
    'token' => '这里填写插件授权码',
    'host' => '127.0.0.1',
    'port' => 6379,
    'database' => 0, // 指定Redis数据库
    'maxttl' => 3600 * 24 * 7, // 7 天
    'timeout' => 1.0,
    'read_timeout' => 1.0,
    'split_alloptions' => true,
    'debug' => false,
]);

define('WP_REDIS_DISABLED', false);

在示例中可以看到,前面是参数后面是值。以下介绍一些常用的参数:

  • ‘host’ => 这里指定 Redis服务器地址,如果和WEB服务器在同一个主机,则设定为’127.0.0.1’即可。
  • ‘port’ => 这个是Redis的连接端口,默认为6379,如果在Redis中变更了默认端口,那么这里也要跟着变更。
  • ‘database’ => 这个参数是指定Redis数据库编号,如果有多个网站使用同一个Redis服务器,则需要为每个网站指定一个不同的数据库编号。默认为0,最多支持的编号数量取决于Redis服务器支持的数据库数量,一般默认支持16个。
  • ‘username’ => 指定连接的用户名,如Redis未设置登录验证,则无需该参数。用法示例:'username' => 'abc',
  • ‘password’ => 指定连接的密码,用法同上。
  • ‘prefix’ => 类似于 WP 的$table_prefix变量,它为所有数据库表名添加前缀。示例:'prefix' => 'mysitename',
  • ‘maxttl’ => 以秒为单位对所有新的缓存键强制执行“最大生存时间”。示例:'maxttl' => 3600 * 24, // 24小时
  • ‘timeout’ => 与 Redis 的连接超时时间,以秒为单位,支持小数。示例:'timeout' => 1.5,
  • ‘read_timeout’ => 读取超时时间,以秒为单位,支持小数,用法同上。
  • ‘retry_interval’ => 重试间隔,以毫秒为单位,支持整数。示例:'retry_interval' => 300,
  • ‘retries’ => 设置连接失败的重试次数,整数型。
  • ‘backoff’ => ‘default’, 使用重试配置时,将使用默认回退配置,该配置包括:去相关抖动算法、补偿计算的基数是500毫秒、补偿时间上限为750毫秒
  • ‘shared’ => true, 设定Redis 服务器/集群是共享的还是专用的。这会影响内存和键计数的显示方式。
  • ‘async_flush’ => true, 在Redis 4.0中引入了异步刷新,可以使用该async_flush选项启用。它允许在后台删除大量Key而不会阻塞服务器。
  • ‘prefetch’ => true, 启用预取后,请求的缓存键将基于每个请求进行存储,并在连续请求的早期按组进行批量加载。可预取键值列表在每次请求时都会更新,以保持其最新状态。

以上是一些常用参数,基本满足绝大部分网站需求,如需要了解全部参数,可以查阅详细文档

注意所有的参数设定行尾部都要加上英文逗号(,)。

如果在 Redis Object Cache Pro 插件的仪表板中能看到请求数据,说明配置成功

 

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。Aiboom.com 本站分享的WordPress主题/插件均遵循GPLv2 许可协议(免费开源),相关介绍资料仅供参考,实际版本可能会因版本迭代或开发者调整而产生变化。如程序中涉及有第三方原创图像、设计模板、远程服务等内容,应获得作者授权后方可使用。本站不提供该程序/软件的产品授权与技术服务,亦不收取相关费用。