准备工作
在开始配置之前,确保你已经完成以下准备工作:
- 确认你的服务器上已成功安装和配置 Redis 。
- 安装并启用 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' => true
:alloptions
键是否应该存储为散列。如果你的站点有大量的选项(如 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扩展需要使用igbinary
和zstd
进行编译
其中你原本环境的php如果之前是编译安装可以直接下一步,快速安装的需要卸载使用编译安装方式,我们需要编译的扩展是redis,igbinary和zstd扩展可以直接使用宝塔官方编译的。
插件统计视图
在插件的设置界面中,将展示与缓存相关的各项数据图表,示例如下:
这些图表提供了关于 WordPress 站点使用 Redis 缓存的性能和行为的详细信息。下面是各项指标的具体含义:
- “Requests”(请求):
- Cached Hits: 显示已经在内存中缓存的请求数量。
- Uncached Hits: 显示未在内存中缓存的请求数量。
- Misses: 显示未被缓存的请求数量。
- Hits-to-Misses Ratio: 显示在内存中缓存的请求与未被缓存的请求之间的比率。这个比率越高,表示缓存的效果越好。
- “Redis:Requests”(Redis请求):
- Successful Key Lookups: 显示成功的Redis键查找次数。
- Failed Key Lookups: 显示失败的Redis键查找次数。
- Hits-to-Misses Ratio: 显示Redis键查找的命中与未命中之间的比率。高比率通常表示Redis缓存效果良好。
- “Commands”(命令):
- Cache Reads: 显示从缓存读取的次数。
- Datastore Writes: 显示写入数据存储的次数。这表示缓存过期或需要更新。
- Datastore Reads: 显示从数据存储读取的次数。
- Cache Writes: 显示写入缓存的次数。
- “Response Times”(响应时间):
- WordPress Render Time: 显示 WordPress 渲染请求所需的平均时间(毫秒)。
- Datastore Response Time: 显示等待数据存储响应的平均时间(毫秒)。
- “Redis:Memory”(Redis 内存):
- Memory Allocated: 显示Redis当前分配的内存量。
- Used Memory: 显示已使用的 Redis 内存量。
- Memory Ratio: 显示Redis分配内存与可分配最大内存之间的比率。这可用于监视Redis内存使用情况。
- “Datastore Command Time”(数据存储命令时间):
- Average Time Waiting for Datastore Response: 显示等待数据存储响应的平均时间(毫秒)。这有助于了解数据存储的性能。
- “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 淘汰策略及其适用场景:
noeviction:
- 描述:当内存达到上限时,不会删除任何键,而是返回错误。
- 适用场景:适用于不希望丢失任何缓存数据的场景,但需要确保内存足够大,避免频繁达到上限。
allkeys-lru(Least Recently Used):
- 描述:在所有键中,删除最久未使用的键。
- 适用场景:适用于希望缓存中保留最近最常使用的数据的场景。对于 WordPress,通常是一个不错的选择,因为最近访问的数据往往更有可能再次访问。
volatile-lru:
- 描述:在设置了过期时间的键中,删除最久未使用的键。
- 适用场景:适用于只希望删除那些有过期时间的缓存键,而保留没有过期时间的永久性数据。
allkeys-random:
- 描述:在所有键中,随机删除键。
- 适用场景:适用于不关心具体删除哪些键的场景,但一般不推荐,因为它可能删除一些仍然有用的数据。
volatile-random:
- 描述:在设置了过期时间的键中,随机删除键。
- 适用场景:适用于希望删除具有过期时间的键,但不关心具体删除哪些键的场景。
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](https://file.77il.cn/wp-content/uploads/2022/10/2022102315123692.webp)
修改之后也需要重启redis,至此教程结束。
附件【已经编译好的扩展】
PHP8.1环境下编译的,方便大家使用
云盘
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
请登录后查看评论内容