Redis Object Cache Pro 插件是一款非常专业的WordPress对象缓存插件,它基于开源的Redis(key-value数据库)。通过插件与Redis的加持,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 云数据库,腾讯云与阿里云等都有该类型产品。
安装 Redis
如何安装 Redis 取决于您的操作系统。请参阅下面最适合您需求的指南:
WEB服务器的环境要求
- PHP >= 7.0
- PhpRedis >= 3.1.1
Redis Object Cache Pro 参数设置
插件在仪表板中没有任何配置选项,所有的参数配置均在wp-config.php配置文件中完成。它需要定义一个名称为’WP_REDIS_CONFIG’的常量,以下示例适用于大多数网站:
define('WP_REDIS_CONFIG', [
'token' => '这里填写随机60个字符ewadawd21312都可以',
'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 插件的仪表板中能看到请求数据,说明配置成功:
获取 Redis Object Cache Pro 插件?免费提供,因为所以,请留言邮箱,我会发。
Redis Object Cache Pro评论后会及时更新吗,我之前和缓存插件一起用发现浏览量和评论登录信息这种都不会立马更新要手动清除[大笑],现在用的免费版没用缓存插件感觉还行
@微生之最 更新啊,你是justnews主题吗?你说的首页评论更新,可以更新的。你可以留言再去我首页看。