欢迎光临好主题官网!致力于 WordPress 企业主题定制开发及 WP外贸模板下载。

宝塔服务器运行两个 WordPress 网站,如何分别配置 Redis Object Cache?实战教程

文章目录

一、问题背景:两个 WordPress 网站如何共用 Redis?

在 WordPress 网站优化过程中,Redis Object Cache 是一种常见的对象缓存方案。通过将 WordPress 对象缓存存储到 Redis 中,可以减少部分重复数据库查询和重复计算,从而改善网站后台及动态页面的响应效率。

对于运行在宝塔面板上的 WordPress 网站,如果服务器只运行一个站点,通常只需要安装 Redis 服务、启用 PHP Redis 扩展,然后安装并启用 Redis Object Cache 插件即可。

但当一台服务器同时运行两个 WordPress 网站时,就需要考虑一个问题:

两个网站能否共用同一个 Redis 服务?如果可以,如何避免两个网站的缓存数据相互混淆?

答案是可以。

本文以一台运行宝塔面板的服务器为例,介绍如何让两个独立的 WordPress 网站共用一个 Redis 服务,并通过不同的 Redis 数据库编号和缓存前缀实现逻辑隔离。

本文方案已经在实际环境中完成配置并验证,两个 WordPress 网站均已正常使用 Redis Object Cache。

二、服务器环境说明

本次测试环境如下:

项目 配置信息
服务器面板 宝塔面板
服务器配置 2 核 CPU、4GB 内存
网站程序 WordPress
网站数量 2 个独立 WordPress 网站
PHP 扩展 Redis、OPcache 已安装
Redis 服务 已安装并正常运行
对象缓存插件 Redis Object Cache
配置方式 共用 Redis 服务,使用不同数据库编号

需要说明的是,PHP Redis 扩展与 Redis 服务是两个不同的组件。

  • Redis 服务:负责存储和管理缓存数据。
  • PHP Redis 扩展:负责让 PHP 程序能够与 Redis 通信。
  • Redis Object Cache 插件:负责将 WordPress 的对象缓存接入 Redis。
  • OPcache:缓存 PHP 编译后的字节码,与 Redis 对象缓存属于不同的优化机制。

如果服务器已经正常安装 Redis 服务和 PHP Redis 扩展,就不需要仅仅因为增加了一个 WordPress 网站而重复安装这些组件。

三、核心方案:共用 Redis 服务,使用不同数据库

Redis 支持通过逻辑数据库编号区分不同的数据集合。

例如,网站 A 使用 Redis 数据库 0,网站 B 使用 Redis 数据库 1。

两个 WordPress 网站仍然连接同一个 Redis 服务,但各自使用不同的数据库编号。

配置关系如下:

配置项 网站 A 网站 B
Redis 服务 共用 共用
Redis 地址 127.0.0.1 127.0.0.1
Redis 端口 6379 6379
Redis 数据库编号 0 1
缓存前缀 site_a: site_b:
WordPress 插件 Redis Object Cache Redis Object Cache

其中,127.0.0.1 和 6379 是常见的本地 Redis 连接配置示例,实际使用时应以服务器的 Redis 配置为准。

缓存前缀也可以替换为更容易识别的站点标识,例如 haozhuti_cn:。

这种方式不需要为每个网站单独启动一个 Redis 服务,也不需要创建两个独立的 Redis 实例。

需要注意,Redis 逻辑数据库不是独立的服务实例。两个网站仍然共享 Redis 的内存、CPU 和服务权限,因此应做好网络访问限制和资源管理。

另外,Redis Cluster 不支持通过这种方式使用多个逻辑数据库。如果服务器采用 Redis Cluster,需要使用其他隔离方案。

四、第一步:确认 Redis 服务正常运行

首先登录宝塔面板,检查 Redis 服务状态,确保服务已经正常运行。

如果可以通过 SSH 登录服务器,也可以执行以下命令检查 Redis 是否正常响应:

redis-cli ping

如果返回:

PONG

通常说明 Redis 服务能够正常响应连接请求。

如果 Redis 设置了密码,需要先使用正确的认证方式进行连接。

还需要确认 Redis 的监听地址和端口。对于运行在同一台服务器上的 WordPress 网站,通常优先使用本地连接,避免不必要的公网暴露。

五、第二步:配置第一个 WordPress 网站

进入第一个 WordPress 网站的根目录,找到 wp-config.php 文件。

例如:

/www/wwwroot/site-a.com/wp-config.php

在 wp-config.php 中找到以下注释:

/* That's all, stop editing! Happy publishing. */

在这行注释之前添加 Redis 配置:

// Redis Object Cache:网站 A
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_DATABASE', 0 );
define( 'WP_REDIS_PREFIX', 'site_a:' );

如果 Redis 服务启用了密码认证,还需要添加:

define( 'WP_REDIS_PASSWORD', '替换为实际的Redis密码' );

注意:

  1. 示例中的 Redis 地址、端口和密码必须与服务器实际配置一致。
  2. 如果 wp-config.php 中已经存在相同的常量,不要重复定义,应修改现有配置。
  3. 如果第一个网站原本已经正常使用 Redis Object Cache,建议保留原有连接参数,只检查和补充数据库编号及缓存前缀。

完成后,第一个 WordPress 网站将使用 Redis 数据库 0。

六、第三步:配置第二个 WordPress 网站

接下来进入第二个 WordPress 网站的根目录,找到对应的 wp-config.php 文件。

例如:

/www/wwwroot/site-b.com/wp-config.php

同样在以下注释之前添加配置:

/* That's all, stop editing! Happy publishing. */

配置代码如下:

// Redis Object Cache:网站 B
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_DATABASE', 1 );
define( 'WP_REDIS_PREFIX', 'site_b:' );

如果 Redis 设置了密码,同样添加正确的认证配置:

define( 'WP_REDIS_PASSWORD', '替换为实际的Redis密码' );

两个网站可以使用相同的 Redis 地址、端口和密码,但需要分别配置不同的数据库编号。

本方案的关键区别是:

// 网站 A
define( 'WP_REDIS_DATABASE', 0 );
define( 'WP_REDIS_PREFIX', 'site_a:' );

// 网站 B
define( 'WP_REDIS_DATABASE', 1 );
define( 'WP_REDIS_PREFIX', 'site_b:' );

通过这种配置,可以避免两个网站在正常使用 Redis Object Cache 时将彼此的对象缓存当作自己的缓存数据。

需要注意,Redis 的逻辑数据库数量由服务器配置决定。常见默认配置为 16 个逻辑数据库,即编号 0 至 15,但应以实际配置为准。

七、第四步:分别启用 Redis Object Cache 插件

完成两个网站的配置文件修改后,分别登录各自的 WordPress 后台。

操作步骤如下:

  1. 进入「插件 → 已安装的插件」。
  2. 搜索并确认已经安装 Redis Object Cache。
  3. 启用插件。
  4. 进入「设置 → Redis」。
  5. 点击 Enable Object Cache,启用对象缓存。
  6. 检查插件显示的连接状态,确认 Redis 已成功连接。

插件官方地址:

https://wordpress.org/plugins/redis-cache/

两个网站需要分别启用对象缓存,不能只在其中一个网站启用后,就认为另一个网站也已经完成配置。

Redis Object Cache 通常会在每个 WordPress 网站自己的 wp-content 目录下创建或管理 object-cache.php 文件。

例如:

网站 A/wp-content/object-cache.php
网站 B/wp-content/object-cache.php

这两个文件属于各自的 WordPress 安装目录,不需要手动复制到另一个网站。

如果插件无法启用对象缓存,应检查文件权限、现有 Drop-in 文件以及 Redis 连接配置,而不是直接删除相关文件。

八、第五步:验证两个网站是否配置成功

配置完成后,需要分别进入两个网站的 WordPress 后台,检查 Redis Object Cache 的状态。

主要确认以下内容:

  • Redis 服务可以正常连接。
  • Redis Object Cache 插件成功启用。
  • 插件没有持续报告连接错误。
  • 两个网站都能够正常访问前台和后台。
  • 登录、退出登录及网站原有功能没有受到影响。

如果需要进一步检查 Redis 中是否存在不同数据库的缓存数据,可以在服务器终端执行:

redis-cli INFO keyspace

在已有缓存数据的情况下,可能看到类似输出:

db0:keys=120,expires=80,avg_ttl=3600000
db1:keys=95,expires=60,avg_ttl=3600000

以上仅为格式示例,不是实际测试结果。实际键数量和过期时间会随网站访问、缓存淘汰及插件运行情况发生变化。

如果某个数据库暂时没有缓存数据,也可能不会显示对应记录。

不要为了测试而随意执行 FLUSHALL。 该命令会清空 Redis 中所有逻辑数据库的数据,可能同时影响两个网站及其他依赖 Redis 的程序。

九、Redis Object Cache 与 WP Rocket 可以同时使用吗?

可以。

Redis Object Cache 与 WP Rocket 的主要作用不同,可以在同一个 WordPress 网站中配合使用。

缓存类型 主要作用
Redis Object Cache 缓存 WordPress 对象,减少部分重复数据库查询和对象计算
WP Rocket 页面缓存 根据配置缓存页面输出,减少重复执行 PHP 和生成页面的开销
OPcache 缓存 PHP 编译后的字节码,减少重复编译开销

三者并不是相互替代的关系。

对于包含 WooCommerce、Elementor 或其他动态功能的 WordPress 网站,合理组合页面缓存、对象缓存与 PHP 字节码缓存,有助于改善网站性能。

不过,缓存效果仍然取决于网站架构、数据库查询、插件实现、页面缓存规则和服务器资源。启用 Redis 不代表所有页面都会自动变快,也不能代替必要的性能测试。

十、2 核 4GB 服务器需要注意什么?

对于一台运行两个 WordPress 网站的 2 核 4GB 服务器,共用一个 Redis 实例通常是比较简单的部署方式。

建议重点关注以下事项:

1. 合理控制 Redis 内存占用

两个网站共享同一 Redis 实例,也共享其可用内存。

应结合服务器的实际内存情况设置 Redis 内存上限和合适的淘汰策略,避免 Redis、MySQL、PHP-FPM 等服务竞争内存。

2. 不要向公网开放 Redis 端口

Redis 应尽量监听本地地址,并通过防火墙限制不必要的访问。

不要为了方便 WordPress 连接而直接开放 6379 端口给所有公网 IP。

3. 保持缓存前缀唯一

即使两个网站使用不同的数据库编号,也建议为每个网站配置独立的缓存前缀。

如果未来增加第三个 WordPress 网站,可以继续为其分配合适的数据库编号,并使用独立前缀。

4. 不要把对象缓存与页面缓存混为一谈

如果网站出现登录状态异常、购物车异常或动态内容未更新的问题,应分别检查 Redis 对象缓存、WP Rocket 页面缓存以及相关插件的缓存规则。

不同类型的缓存需要采用不同的排查方法。

十一、常见问题

问题 1:两个网站必须安装两套 Redis 服务吗?

不需要。

在同一台服务器上,两个 WordPress 网站通常可以共用一个 Redis 服务,通过不同的逻辑数据库编号和缓存前缀实现缓存隔离。

问题 2:两个网站可以使用同一个 Redis 数据库编号吗?

技术上可以,但如果没有可靠的键前缀隔离,可能出现缓存键冲突或相互影响。

因此,针对两个独立网站,建议优先使用不同的数据库编号,并为每个网站设置唯一的缓存前缀。

问题 3:PHP Redis 扩展需要安装两次吗?

不需要。

PHP Redis 扩展安装在对应的 PHP 运行环境中。如果两个网站使用同一个 PHP 版本和运行环境,并且扩展已经正确启用,通常可以直接共用。

如果两个网站使用不同的 PHP 版本,则需要分别确认各自 PHP 环境中的 Redis 扩展是否已启用。

问题 4:两个网站都安装 Redis Object Cache 插件后,是否会自动使用不同的数据库?

不一定。

如果两个网站使用相同的默认配置,它们可能连接到相同的 Redis 数据库。因此,需要在各自的 wp-config.php 中明确设置不同的数据库编号和缓存前缀。

问题 5:Redis 数据库编号不同,就完全独立了吗?

不是。

不同逻辑数据库可以隔离正常的键访问,但它们仍然共享同一个 Redis 服务实例、内存、CPU 和服务级配置。

如果有严格的安全隔离、不同权限或独立资源配额要求,应考虑使用独立 Redis 实例或其他隔离架构。

十二、总结

对于宝塔面板上运行两个 WordPress 网站的服务器,如果 Redis 服务和 PHP Redis 扩展已经安装完成,可以采用共用 Redis 服务的方案,不需要为每个网站单独部署一套 Redis。

核心配置只有三点:

  1. 两个网站连接同一个 Redis 服务。
  2. 在各自的 wp-config.php 中设置不同的 WP_REDIS_DATABASE。
  3. 为两个网站设置不同的 WP_REDIS_PREFIX,然后分别启用 Redis Object Cache。

本文方案已经在实际环境中完成配置并验证,两个 WordPress 网站均已正常工作。

对于中小型 WordPress 网站,这种方案配置简单、维护成本低,也方便后续扩展更多网站。但在正式部署时,仍应结合服务器内存、Redis 安全配置及网站实际负载进行评估。

本文由 好主题 原创整理,致力于分享实用的 WordPress 建站知识与主题开发经验。 我们专注于提供高质量的 WordPress企业主题 资源,帮助中小企业轻松构建专业网站。 转载请注明来源,并保留原文链接,感谢您的支持与理解。

联系我们

教程看不懂?联系我们免费为您解答!免费助力个人,小企站点!

客服微信
相关文章
主题推荐

会员注册

成为会员,获得更多专属优惠!

验证码: 加载中... =

已有账号?
还没有账号?