WordPress开启Redis对象缓存
WordPress 开启 Redis 对象缓存,最直接的效果是把页面重复查询结果暂存在内存里,下一次请求直接读缓存,不再反复压榨 MySQL。
本文会用零基础能跟上的方式,讲清从安装 Redis 服务端到插件启用、再到验证是否生效的全过程,并附带常见报错处理思路。
开启 Redis 缓存前需要准备什么
以常用环境为例,一般需要满足几个基本条件:
- 服务器已经装好 WordPress,并且能正常访问后台。
- 拥有服务器 root 权限或能使用宝塔面板操作。
- PHP 版本不低于 7.0,建议使用 7.4 或 8.x。
- 服务器内存尽量在 1GB 以上,Redis 默认会占用一部分内存,太小容易影响其他服务。
重要概念: 对象缓存是把 WordPress 的数据库查询结果缓存到 Redis 中,并不是替代 MySQL,而是减少高频重复查询对数据库的压力。
安装 Redis 服务端和 PHP 扩展
根据服务器管理方式不同,安装路径分两种。
方式一:宝塔面板安装
在宝塔后台左右侧找到“软件商店”,搜索 Redis,点击安装服务端,版本保持默认即可。
下一步给 PHP 安装 Redis 扩展:
- 在软件商店找到你正在使用的 PHP 版本,例如 PHP 7.4。
- 点击“设置”,进入“安装扩展”页签。
- 找到
redis,点击“安装”。 - 等待扩展安装完成后,重载 PHP-FPM 服务。
此时 Redis 服务端和 PHP Redis 扩展都已就绪。
方式二:命令行安装
Debian/Ubuntu 系统执行:
apt update
apt install redis-server -y
systemctl start redis-server
systemctl enable redis-server
CentOS/RHEL 系统执行:
yum install redis -y
systemctl start redis
systemctl enable redis
再安装 PHP Redis 扩展,如果使用 pecl:
pecl install redis
安装完成后需要把 extension=redis.so 写入 PHP 配置文件,并重启 PHP-FPM。
具体路径因环境而异,如果有疑问可以用 php -m | grep redis 检查是否加载成功。
给 WordPress 启用 Redis 对象缓存插件
后台插件市场搜索 Redis Object Cache,推荐安装 WordPress 官方仓库中的同名插件。
激活插件后,进入“设置 -> Redis”,点击页面底部的 Enable Object Cache 按钮。
如果连接正常,状态区域会显示类似 Connected 和 Redis is up,同时会列出内存使用和命中统计。
这代表对象缓存已经在工作。
如果不想用插件,也可以直接在 wp-config.php 中添加以下代码:
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_DATABASE', 0);
然后再次尝试启用缓存,插件会自动使用这里配置的连接参数。
验证缓存是否真的生效
安装完成后不要只看“已启用”,还需要确认 Redis 里确实存入了 WordPress 数据。
在服务器命令行执行:
redis-cli
进入 Redis 命令行后运行:
dbsize
ping
keys '*' | head -20
正常情况下 dbsize 返回的数字大于 0,ping 返回 PONG,keys 能看到包含 wp_ 或 pt_ 前缀的缓存键。
另一个角度,直接观察 MySQL 查询压力:
SHOW GLOBAL STATUS LIKE 'Questions';
开启缓存前记录一次数值,正常浏览几个页面后再查一次。
如果数值增长明显变慢,说明重复查询已经被 Redis 拦截掉了一部分。
更保险的做法是临时停掉 Redis 服务,再刷新一次页面并记录响应时间;
然后重新启动 Redis,刷新相同页面比较前后耗时。
两者数据差异大,说明缓存命中效果明显。
常见报错和避坑说明
连接失败
插件提示 Connection refused,首先检查 Redis 是否在运行:
systemctl status redis-server
状态输出为 active (running) 时再检查端口监听,使用 netstat -nltp | grep 6379,没有输出则可能是 Redis 没起来或配置了套接字。
宝塔环境留意 Redis 服务是否被安全软件拦截。
缓存不更新导致内容陈旧
使用对象缓存后,如果修改文章或页面,WordPress 本身会在保存内容时自动清除相关缓存,一般不会出现旧数据。
但如果用了额外的页面缓存或 CDN,需要同时在对应插件里清空相关缓存,否则浏览器看到的可能还是旧内容。
沙弗里克服务器内存不足
Redis 默认缓存策略会一直占用内存直到达到上限。
建议在 redis.conf 中限制最大内存,比如 maxmemory 256mb,并设置 maxmemory-policy allkeys-lru,让内存满时自动淘汰最久未使用的键。
修改后执行 systemctl restart redis-server 或点击宝塔 Redis 配置页面的“重启”按钮。
插件状态显示 Disabled
确认 wp-config.php 中没有被其他缓存配置干扰,比如 WP_CACHE 开启失败的场景。
可以先停用插件、重新保存固定链接、再启用插件,多数情况下可以恢复。
最后建议
WordPress 开启 Redis 对象缓存,对流量稍大的站点能明显缓解 MySQL 压力。
不过插件版本和 Redis 配置会随环境变化,建议按本机实际控制台显示的信息为准。
首次配置时先按本文步骤走通连接,再用状态页里的命中次数判断优化空间。
如果遇到异常,优先回看上文“避坑”部分,并检查 Redis 服务状态和 PHP 扩展是否加载成功。
祝你一次配置成功,让网站变得更轻快。