Redis Object Cache Pro是WordPress上面一款数据库缓存插件,使用此插件它可以将数据库中的常用值缓存到内存当中,对于一些磁盘速度较慢的服务器来说,使用内存进行数据缓存的效果还是挺明显的。
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 云数据库,腾讯云与阿里云等都有该类型产品。
相关链接
官网:https://objectcache.pro/
官方文档:https://objectcache.pro/docs/installation
破解版下载:
OneDrive-2023-03-30-Object Cache Pro_1.18.1.zip
v1.18.1,官方2023-03-24更新。
v1.18.1 - 2023-03-24
Changed
- Updated End-User License Agreement
- Don’t flush cache when updating drop-in
Fixed
- Fixed cache timing metric
- Fixed widget flush button label on multisite
- Fixed flushing groups that end with blog id on multisite
WEB服务器的环境要求
- PHP >= 7.0
- PhpRedis >= 3.1.1
Redis Object Cache Pro 参数设置
插件在仪表板中没有任何配置选项,所有的参数配置均在wp-config.php配置文件中完成。它需要定义一个名称为’WP_REDIS_CONFIG’的常量,以下示例适用于大多数网站:
define('WP_REDIS_CONFIG', [
'token' => '这里填写插件授权码',//本站的为激活版,这里输入任意60个字符后台便不会出现需要序列号激活提示。
'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, 启用预取后,请求的缓存键将基于每个请求进行存储,并在连续请求的早期按组进行批量加载。可预取键值列表在每次请求时都会更新,以保持其最新状态。
以上是一些常用参数,基本满足绝大部分网站需求,如需要了解全部参数,可以查阅详细文档。
注意所有的参数设定行尾部都要加上英文逗号(,)。