humanmade / wp-redis
Requires (Dev)
- 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
- 1.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-merge-upstream-changes
- dev-dependabot/npm_and_yarn/grunt-1.6.1
- dev-dependabot/composer/dealerdirect/phpcodesniffer-composer-installer-1.0.0
- dev-dependabot/composer/behat/behat-3.12.0
- dev-docblocks
- dev-dependabot/npm_and_yarn/grunt-wp-readme-to-markdown-2.1.0
- dev-dependabot/composer/behat/mink-goutte-driver-1.3.0
- 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-08-26 13:24:31 UTC
README
贡献者: getpantheon, danielbachhuber, mboynes, Outlandish Josh jspellman jazzs3quence 标签: 缓存, 插件, redis 最低版本要求: 3.0.1 测试版本至: 6.2 稳定版本: 1.4.1 许可: GPLv2 或更高版本 许可链接: https://gnu.ac.cn/licenses/gpl-2.0.html
使用 Redis 作为高性能内存存储后端,备份您的 WP 对象缓存。
描述
对于关注高流量、登录用户速度或动态页面加载的网站,一个高速且持久化的对象缓存是必需的。您还需要能够跨多个应用程序实例进行扩展的东西,因此使用本地文件缓存或 APC 就不适用了。
Redis 是一个很好的答案,也是我们在 Pantheon 平台上捆绑的。这是我们的用于与缓存集成的插件,但如果你有 Redis,你可以在任何自托管的 WordPress 网站上使用它。从 WordPress.org 或 Github 安装。
需要注意的是,持久对象缓存并非万能药 - 包含 2,000 个 Redis 调用的页面加载可能需要 2 秒的对象缓存事务。确保您明智地使用对象缓存:保持合理的键数,不要在每个键上存储大量数据,并避免前端写入和删除的拥堵。
出发,创造奇迹!一旦你创造出一些伟大的东西,给我们发送功能请求(或错误报告)。查看 wiki 以获取 有用的代码片段和其他技巧。
安装
这假设您有一个具有所需 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 插件。如果您仅使用对象缓存插件,则不需要激活。 -
(可选) 要使用同一 Redis 服务器与多个独立的 WordPress 安装,您可以使用
WP_CACHE_KEY_SALT
常量为每个安装定义唯一的盐。 -
(可选) 要使用真正的缓存组,具有删除特定组所有键的能力,请使用
wp_cache_add_redis_hash_groups()
注册组,或将WP_REDIS_USE_CACHE_GROUPS
常量定义为true
以启用所有组。然而,当启用时,过期值不会被尊重,因为 Redis 不支持在组键上设置过期时间。(Redis相关问题#6620) -
(可选) 在之前使用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。
常见问题解答
为什么我想使用这个插件?
如果您担心您站点的速度,使用高性能、持久对象缓存可以产生巨大影响。它减轻了数据库的负载,并使加载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.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针对PRs的目标分支为
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 redis cli
,而不是使用WP_CLI::launch()
[#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日)
- 修复了bug:在内部缓存中保留null值。
- 修复了bug:在获取时将数值转换为它们的真实类型。
0.6.1 (2017年2月23日)
- 修复了bug:正确传递空密码到
redis-cli
。 - 对测试套件进行了各种改进。
0.6.0 (2016年9月21日)
- 引入了三个新的WP-CLI命令:
wp redis debug
,用于显示任何URL的缓存命中/未命中比率;wp redis info
,用于显示Redis的高级统计信息;wp redis enable
,用于创建object-cache.php
符号链接。 - 允许使用
$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
,以兼容Batcache,因为Batcache在上述API可用之前会加载对象缓存。 - 为了调试目的,跟踪Redis调用次数,并包括调用类型的分解。
- 为现有功能添加了大量更明确的测试覆盖率。
- 为了与实际的Redis调用保持一致,调用
del
而不是delete
。 - 修复了bug:如果一个组不是持久的,不要对Redis进行任何
exists
调用。
0.4.0 (2016年3月23日)
- 引入了
wp redis-cli
,这是一个WP-CLI命令,用于使用WordPress的Redis凭据启动redis-cli。 - 修复了bug:通过写入sitemeta表而不是活动站点的选项表,确保在多站点上failback机制按预期工作。
- 修复了bug:使用'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编码标准sniffs来确保WP Redis遵循WordPress编码标准。
- 修复了bug:通过确保提供的
$port
是null,允许在$redis_server['host']
中使用Unix套接字。
0.2.2 (2015年11月24日)
- 修复了bug:使用
INSERT IGNORE INTO
而不是INSERT INTO
,以防止两个并发进程同时尝试写入failback标志时的SQL错误。 - 修复了bug:使用
E_USER_WARNING
与trigger_error()
。 - 修复了bug:捕获认证过程中抛出的异常,以便允许回退到内部对象缓存。
0.2.1 (2015年11月17日)
- 修复了bug:防止在多站点上,当
$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
并进行了自己的更改,请确保也将这些新增功能复制过来。