Redis Object Cache Pro 配置详解及如何开启高性能模式

Redis Object Cache Pro 配置详解及如何开启高性能模式

准备工作

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

  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 替换为你实际的许可证令牌,如在站长帮下载的版本,可在网盘中“安装说明.txt”文件里查看许可证密钥。
  • '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 站点。下面我们将看看更进一步的配置选项。

高级配置

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 替换为你实际的许可证令牌。如在站长帮下载的版本,可在网盘中“安装说明.txt”文件里查看许可证密钥。
  • '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扩展需要使用igbinaryzstd进行编译

其中你原本环境的php如果之前是编译安装可以直接下一步,快速安装的需要卸载使用编译安装方式,我们需要编译的扩展是redis,igbinary和zstd扩展可以直接使用宝塔官方编译的。

插件统计视图

在插件的设置界面中,将展示与缓存相关的各项数据图表,示例如下:

1539c0425d20240804171208

这些图表提供了关于 WordPress 站点使用 Redis 缓存的性能和行为的详细信息。下面是各项指标的具体含义:

  1. “Requests”(请求):
  • Cached Hits: 显示已经在内存中缓存的请求数量。
  • Uncached Hits: 显示未在内存中缓存的请求数量。
  • Misses: 显示未被缓存的请求数量。
  • Hits-to-Misses Ratio: 显示在内存中缓存的请求与未被缓存的请求之间的比率。这个比率越高,表示缓存的效果越好。
  1. “Redis:Requests”(Redis请求):
  • Successful Key Lookups: 显示成功的Redis键查找次数。
  • Failed Key Lookups: 显示失败的Redis键查找次数。
  • Hits-to-Misses Ratio: 显示Redis键查找的命中与未命中之间的比率。高比率通常表示Redis缓存效果良好。
  1. “Commands”(命令):
  • Cache Reads: 显示从缓存读取的次数。
  • Datastore Writes: 显示写入数据存储的次数。这表示缓存过期或需要更新。
  • Datastore Reads: 显示从数据存储读取的次数。
  • Cache Writes: 显示写入缓存的次数。
  1. “Response Times”(响应时间):
  • WordPress Render Time: 显示 WordPress 渲染请求所需的平均时间(毫秒)。
  • Datastore Response Time: 显示等待数据存储响应的平均时间(毫秒)。
  1. “Redis:Memory”(Redis 内存):
  • Memory Allocated: 显示Redis当前分配的内存量。
  • Used Memory: 显示已使用的 Redis 内存量。
  • Memory Ratio: 显示Redis分配内存与可分配最大内存之间的比率。这可用于监视Redis内存使用情况。
  1. “Datastore Command Time”(数据存储命令时间):
  • Average Time Waiting for Datastore Response: 显示等待数据存储响应的平均时间(毫秒)。这有助于了解数据存储的性能。
  1. “Redis:Throughput”(Redis 吞吐量):
  • Commands Processed per Second: 显示Redis处理的命令数量。高吞吐量通常表示Redis服务器正在高效地处理请求。

这些图表的监视可以帮助你更好地了解 WordPress 站点与 Redis 缓存的交互,找到性能瓶颈并进行优化。

Redis扩展编译

下载地址:GitHub – phpredis/phpredis: A PHP extension for Redis

同意上传至服务器,解压并输入以下命令

cd /phpredis
/www/server/php/81/bin/phpize #定位phpize位置
./configure --with-php-config=/www/server/php/81/bin/php-config --enable-redis-igbinary --enable-redis-zstd #定位配置文件
make && make install #编译安装

一般这里会提示缺少软件包,解决方案如下:

Update the package index:

sudo apt-get update

Install libzstd-dev deb package:

sudo apt-get install libzstd-dev

php.ini配置添加

extension = /www/server/php/81/lib/php/extensions/no-debug-non-zts-20210902/redis.so

重启php服务

REDIS的淘汰策略

如果介意后台插件提示请配置redis的淘汰策略,请根据自己的实际情况进行选择

在使用 Redis 作为 WordPress 的缓存后端时,选择适当的淘汰策略(Eviction Policy)是确保缓存性能和资源利用率的关键。Redis 提供了多种淘汰策略来管理内存使用,当内存达到配置的上限时,Redis 会根据策略删除某些键值对。以下是几种常见的 Redis 淘汰策略及其适用场景:

  1. noeviction

    • 描述:当内存达到上限时,不会删除任何键,而是返回错误。
    • 适用场景:适用于不希望丢失任何缓存数据的场景,但需要确保内存足够大,避免频繁达到上限。
  2. allkeys-lru(Least Recently Used):

    • 描述:在所有键中,删除最久未使用的键。
    • 适用场景:适用于希望缓存中保留最近最常使用的数据的场景。对于 WordPress,通常是一个不错的选择,因为最近访问的数据往往更有可能再次访问。
  3. volatile-lru

    • 描述:在设置了过期时间的键中,删除最久未使用的键。
    • 适用场景:适用于只希望删除那些有过期时间的缓存键,而保留没有过期时间的永久性数据。
  4. allkeys-random

    • 描述:在所有键中,随机删除键。
    • 适用场景:适用于不关心具体删除哪些键的场景,但一般不推荐,因为它可能删除一些仍然有用的数据。
  5. volatile-random

    • 描述:在设置了过期时间的键中,随机删除键。
    • 适用场景:适用于希望删除具有过期时间的键,但不关心具体删除哪些键的场景。
  6. volatile-ttl

    • 描述:在设置了过期时间的键中,删除剩余生存时间(TTL)最短的键。
    • 适用场景:适用于希望优先删除即将过期的键的场景。

选择策略的建议

  • 一般建议:对于大多数 WordPress 网站,allkeys-lru 是一个合理的选择,因为它能确保缓存中保留最近最常访问的数据,提高缓存命中率和性能。
  • 特定需求:如果你的缓存策略是基于过期时间的,并且你希望只淘汰那些设置了过期时间的键,可以选择 volatile-lru 或 volatile-ttl

配置淘汰策略

要配置 Redis 的淘汰策略,可以在 Redis 的配置文件 redis.conf 中设置 maxmemory-policy 参数,例如:

maxmemory-policy allkeys-lru

或者通过 Redis 命令行工具设置:

redis-cli config set maxmemory-policy allkeys-lru

图片[2]-Redis Object Cache Pro 配置详解及如何开启高性能模式-小怪兽BLOG

修改之后也需要重启redis,至此教程结束。

附件【已经编译好的扩展】

PHP8.1环境下编译的,方便大家使用

 

云盘

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 共5条

请登录后发表评论

    请登录后查看评论内容