pantheon-systems / wp-redis
Requires (Dev)
- dev-main
- dev-master
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2
- 1.3.1
- 1.3.0
- v1.2.0
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.1
- v1.0.0
- v0.8.3
- v0.8.2
- v0.8.1
- v0.8.0
- v0.7.1
- v0.7.0
- v0.6.2
- v0.6.1
- v0.6.0
- v0.5.0
- v0.4.0
- v0.3.0
- dev-rename-catalog-info-20240923
- dev-dependabot/composer/main/yoast/phpunit-polyfills-3.0.0
- dev-dependabot/composer/main/pantheon-systems/wpunit-helpers-2.0.1
- dev-TEST-FORK-PR-462
- dev-default
- dev-dependabot/composer/default/pantheon-systems/pantheon-wp-coding-standards-2.0.1
- dev-TEST-FORK-PR-452
- dev-release
- dev-TEST-FORK-PR-448
- dev-update-object-cache
- dev-default-cache-port-cache-password
- dev-rw-update-object-cache
- dev-CMSP-390-ii
- dev-CMSP-390
- dev-develop-stash
- dev-TEST-FORK-PR-408
- dev-dependabot/composer/guzzlehttp/psr7-1.9.1
- dev-322-dont-check-tls-connection
- dev-update-composer-2020-10-14
- dev-patch-2
- dev-update-composer-2020-05-26
- dev-feature/set-connection-database
- dev-update-readme-1-0-0
- dev-update-composer-2020-03-02
- dev-update-build-matrix-php-7-4
- dev-patch-1
- dev-preserve-null
- dev-117-wp-redis-enable
- dev-composer-type
- dev-move-plugin-headers
This package is auto-updated.
Last update: 2024-09-23 20:48:47 UTC
README
贡献者: getpantheon, danielbachhuber, mboynes, Outlandish Josh jspellman jazzs3quence
标签: cache, plugin, redis
最低要求 3.0.1
测试到 6.4.1
稳定版本: 1.4.5-dev
许可: GPLv2 或更高版本
许可URI: https://gnu.ac.cn/licenses/gpl-2.0.html
使用Redis作为高性能内存存储后端,为WP对象缓存提供支持。
描述
对于关注高流量、登录用户速度或动态页面加载的网站,一个高速且持久化的对象缓存是必不可少的。您还需要能够在应用程序的多个实例之间扩展的东西,因此使用本地文件缓存或APC是不合适的。
Redis是一个很好的解决方案,我们将其打包在Pantheon平台上。这是我们用于与缓存集成的插件,但如果你有Redis,你可以在任何自托管WordPress网站上使用它。从WordPress.org或Github安装。
需要注意的是,持久化对象缓存并不是万能的——带有2,000个Redis调用的页面加载可能需要2秒钟的全对象缓存事务。请确保您明智地使用对象缓存:保持键的数量合理,不要在每个键上存储大量数据,并避免前端写入和删除的拥堵。
出发去创造伟大吧!一旦您创造出伟大的东西,向我们发送功能请求(或错误报告)。查看维基页面以获取有用的代码片段和其他提示。
安装
这假设您有一个具有所需的PhpRedis扩展和正在运行的Redis服务器(例如Pantheon)的PHP环境。WP Redis还可以通过humanmade/wp-redis-predis-client与Predis一起工作。
-
将
object-cache.php
安装到wp-content/object-cache.php
,通过符号链接或复制文件。 -
如果您不在Pantheon上运行,请编辑wp-config.php以添加您的缓存凭据,例如。
$redis_server = array( 'host' => '127.0.0.1', 'port' => 6379, 'auth' => '12345', 'database' => 0, // Optionally use a specific numeric Redis database. Default is 0. );
-
如果您的Redis服务器通过套接字文件监听,则在
host
参数上设置其路径,并将端口更改为null
$redis_server = array( 'host' => '/path/of/redis/socket-file.sock', 'port' => null, 'auth' => '12345', 'database' => 0, // Optionally use a specific numeric Redis database. Default is 0. );
-
启动推进器:您现在已使用Redis支持WP的对象缓存。
-
(可选)要使用
wp redis
WP-CLI命令,请激活WP Redis插件。如果您仅使用对象缓存插件,则不需要激活。 -
(可选)要使用多个、独立的WordPress安装共享同一个Redis服务器,您可以使用
WP_CACHE_KEY_SALT
常量为每个安装定义一个唯一的盐。 -
(可选) 要使用真正的缓存组,并具有删除给定组中所有键的能力,请使用
wp_cache_add_redis_hash_groups()
注册组,或将WP_REDIS_USE_CACHE_GROUPS
常量定义为true
以启用所有组。但是,当启用时,过期值不会被尊重,因为组键的过期功能不是由 Redis 支持 的。 -
(可选) 在之前使用 WordPress 的短暂缓存的现有网站上,使用 WP-CLI 从选项表中删除所有(
%_transient_%
)短暂:wp transient delete-all
。WP Redis 承担短暂缓存的职责。 -
(可选) 要使用 Relay 而不是 PhpRedis 作为客户端,请将
WP_REDIS_USE_RELAY
常量定义为true
。对于支持请求,请使用 Relay 的 GitHub 讨论区。
WP-CLI 命令
此插件实现了多种 WP-CLI 命令。所有命令都归类到 wp redis
命名空间。
$ wp help redis
NAME
wp redis
SYNOPSIS
wp redis <command>
SUBCOMMANDS
cli Launch redis-cli using Redis configuration for WordPress
debug Debug object cache hit / miss ratio for any page URL.
enable Enable WP Redis by creating the symlink for object-cache.php
info Provide details on the Redis connection.
使用 wp help redis <command>
了解有关每个命令的更多信息。
贡献
有关贡献的信息,请参阅 CONTRIBUTING.md。
安全策略
报告安全漏洞
请通过 Patchstack 漏洞披露计划 报告在 WP Redis 插件源代码中发现的任何安全漏洞。Patchstack 团队将协助您进行验证、CVE 分配,并通知此插件的开发者。
常见问题解答
为什么我想使用这个插件?
如果您关心您站点的速度,使用高性能、持久的对象缓存可以产生巨大的影响。它可以减轻数据库的负载,并且对于加载 WordPress 运行所需的所有数据对象来说速度更快。
这个插件与其他缓存插件如何协同工作?
此插件是用于内部应用程序对象缓存的。它与页面缓存无关。在 Pantheon 上,您不需要额外的页面缓存,但如果您是自己托管,则可以与 WP Redis 一起使用您喜欢的页面缓存插件。
如何禁用不良行为者的持久对象缓存?
带有 2,000 个 Redis 调用的页面加载可能是 2 秒的对象缓存事务。如果您使用的插件错误地创建了大量缓存键,您可能可以通过禁用插件组的缓存持久性来减轻问题。
wp_cache_add_non_persistent_groups( array( 'bad-actor' ) );
此声明意味着使用 wp_cache_set( 'foo', 'bar', 'bad-actor' );
和 wp_cache_get( 'foo', 'bad-actor' );
将不会使用 Redis,而将回退到 WordPress 的默认运行时对象缓存。
为什么对象缓存有时会与数据库不同步?
WordPress 的 alloptions
缓存设计存在已知问题。具体来说,两个请求之间的竞争条件可能导致对象缓存有陈旧值。如果您认为您可能受到影响,请 审查此 GitHub 问题 以获取更多背景信息,包括解决方案。
变更日志
1.4.5-dev
1.4.4(2023 年 11 月 27 日)
1.4.3(2023 年 6 月 26 日)
- 错误修复:修复了假设 CACHE_PORT & CACHE_PASSWORD 已设置的问题。[428](props @timnolte)
- 添加 WP.org 验证 GitHub 动作 [#435]
- 错误修复:修复了
array_replace_recursive
和其他问题的顺序错误 [434] (致谢 @timnolte) - 错误修复:在 object-cache.php 中替换 wp_strip_all_tags 的使用 [434] (致谢 @timnolte)
- 错误修复:不要从缓存密码中删除标签 [434] (致谢 @timnolte)
1.4.2 (2023年5月15日)
- 错误修复:移除由
esc_html
在_exception_handler()
中引起的异常循环 [421]
1.4.1 (2023年5月11日)
- 错误修复:
wp_cache_flush_runtime
应仅清除本地缓存 [413]
1.4.0 (2023年5月9日)
- 添加对
flush_runtime
和flush_group
函数的支持 [#405] - 添加
pantheon-wp-coding-standards
[#400] - 更新 CONTRIBUTING.MD [#406]
- 更新 Composer 依赖 [#401]
1.3.5 (2023年4月6日)
- 将测试版本提升至 6.2
- 更新 Composer 依赖 [#394]
1.3.4 (2023年3月7日)
- 如果 Redis 服务未连接,则设置
missing_redis_message
[#391]
1.3.3 (2023年2月28日)
1.3.2 (2022年12月5日)
- 修复了损坏的
wp_cache_supports
函数 [#382].
1.3.1 (2022年12月2日)
- 声明
wp_cache_supports
函数并支持功能。 [#378] - 将 dependabot 目标设置为 PR 的
develop
分支。 [#376] - 声明
wp_cache_supports
函数并支持功能。 [#378]
1.3.0 (2022年11月29日)
- 添加 CONTRIBUTING.MD 和 GitHub 操作来自动化向 wp.org 的部署。[#368]
1.2.0 (2022年2月17日)
- 通过
WP_REDIS_USE_RELAY
常量添加对 Relay 的支持 [#344].
1.1.4 (2021年10月21日)
- 修复了
WP_REDIS_IGNORE_GLOBAL_GROUPS
检查中的一些错误逻辑 [#333].
1.1.3 (2021年10月21日)
- 支持
WP_REDIS_IGNORE_GLOBAL_GROUPS
常量,以防止将组添加到全局缓存组 [#331].
1.1.2 (2021年3月24日)
- 将用于其他地方的逻辑应用于
wp_redis_get_info()
中的$_SERVER
回退 [#316].
1.1.1 (2020年8月17日)
- 使用
wp_cache_get_multiple()
并内部缓存已预加载时,正确顺序返回缓存数据 [#292].
1.1.0 (2020年7月13日)
1.0.1 (2020年4月14日)
- 添加了对从环境/服务器变量指定Redis数据库编号的支持 [#273].
1.0.0 (2020年3月2日)
- 插件稳定。
0.8.3 (2020年2月24日)
- 通过直接使用
proc_open()
而不是WP_CLI::launch()
修复了wp redis cli
[#268].
0.8.2 (2020年1月15日)
- 在尝试连接Redis时捕获异常 [#265].
0.8.1 (2020年1月10日)
- 添加了
WP_REDIS_DEFAULT_EXPIRE_SECONDS
常量以设置默认缓存过期值 [#264].
0.8.0 (2020年1月6日)
- 使用
flushdb
而不是flushAll
以避免清除整个Redis实例 [#259].
0.7.1 (2018年12月14日)
- 在
wp_cache_init()
中更好地支持如LudicrousDB之类的插件 [#231]. - 清理了PHPCS问题。
0.7.0 (2017年8月22日)
- 添加了可过滤的连接方法,允许使用Predis。有关更多信息,请参阅humanmade/wp-redis-predis-client.
0.6.2 (2017年6月5日)
- 错误修复:在内部缓存中保留null值。
- 错误修复:在获取时将数值值转换为其实际类型。
0.6.1 (2017年2月23日)
- 错误修复:正确传递给
redis-cli
的空密码。 - 测试套件的各种改进。
0.6.0 (2016年9月21日)
- 引入了三个新的WP-CLI命令:用于显示任何URL的缓存命中/未命中比的
wp redis debug
;用于显示Redis高级统计信息的wp redis info
;用于创建object-cache.php
符号链接的wp redis enable
。 - 允许使用
$redis_server['database']
定义Redis数据库。 - 引入了
wp_cache_add_redis_hash_groups()
,允许注册特定组使用Redis散列,比现有的WP_REDIS_USE_CACHE_GROUPS
常量更精确。
0.5.0 (2016年4月27日)
- 性能提升!从
wp_cache_get()
中移除冗余的exists
调用,这可以将Redis调用的数量减半。 - 以更安全的方式使用
add_action()
和$wpdb
,以与在上述API可用之前加载对象缓存的Batcache兼容。 - 出于调试目的,跟踪Redis调用的次数,并包括调用类型的分解。
- 添加了对现有功能的大量更明确的测试覆盖率。
- 为了与实际的Redis调用保持一致,使用
del
而不是delete
。 - 错误修复:如果组不是持久的,则永远不要对Redis进行
exists
调用。
0.4.0 (2016年3月23日)
- 引入了
wp redis-cli
,这是一个WP-CLI命令,可以与WordPress的Redis凭据一起启动redis-cli。 - 错误修复:通过写入sitemeta表而不是活动站点的选项表,确保多站点上的回滚机制按预期工作。
- 错误修复:使用 'default' 作为默认缓存组,与WordPress核心保持一致,因此
$wp_object_cache->add( 'foo', 'bar' )
===wp_cache_add( 'foo', 'bar' )
。
0.3.0 (2016年2月11日)
- 介绍对Redis缓存组的可选支持。通过
define( 'WP_REDIS_USE_CACHE_GROUPS', true );
启用。启用后,WP Redis将以结构化的方式持久化缓存组,而不是将缓存键和组一起散列。 - 使用PHP_CodeSniffer和WordPress编码标准嗅探器来确保WP Redis遵循WordPress编码标准。
- 错误修复:通过确保提供的
$port
为null,允许在$redis_server['host']
中使用Unix套接字。
0.2.2(2015年11月24日)
- 错误修复:使用
INSERT IGNORE INTO
而不是INSERT INTO
,以防止当两个并发进程同时尝试写入failback标志时发生SQL错误。 - 错误修复:使用
E_USER_WARNING
与trigger_error()
。 - 错误修复:在认证过程中捕获抛出的异常,以允许回退到内部对象缓存。
0.2.1(2015年11月17日)
- 错误修复:防止在多站点中尚未初始化
$wpdb->options
时发生SQL错误。
0.2.0(2015年11月17日)
- 当Redis不可用或间歇性时,优雅地回退到WordPress对象缓存。以前,WP Redis会引发硬致命错误。
- 如果Redis在请求中途消失,触发PHP错误,以便您在日志中监控。根据特定错误消息尝试一次重新连接。
- 当Redis在失败后恢复时,强制Redis执行flushAll。此行为可以通过
WP_REDIS_DISABLE_FAILBACK_FLUSH
常量来禁用。 - 当Redis不可用但预期应该可用时,显示管理提示。
0.1
- 为所有人利益提交的代码的初始版本。
升级通知
1.4.0 (2023年5月9日)
WP Redis 1.4.0增加了对flush_runtime
和flush_group
函数的支持。如果您已复制object-cache.php
并进行了自己的更改,请确保也复制这些新增内容。