Decentralization? We're still early!
返回課程

主权个人的WordPress入门课

0%完成
0/0 Steps
  1. 第一部分 WordPress基础知识入门

    WordPress:内容创作者的知识输出及展示利器
  2. WordPress的开源生态:开源软件运动、GPL协议与AI赋能
  3. WordPress的软件版本、路线图与社区文化
  4. 值得关注的WordPress信息源与常用工具
  5. 五分钟安装指南、主题插件与备份还原方法
  6. 第二部分 WordPress与本地知识管理
    如何在本地电脑/服务器快速部署WordPress站点
  7. 最强CMS:WordPress的文件结构、前端与后端
  8. 学习使用Gutenberg编辑器进行内容创作和排版
  9. 学习使用全站编辑主题(FSE)进行站点设计
  10. 自定义文章类型:WordPress的基础功能及其拓展
  11. 第三部分 如何在云端部署WordPress
    云端部署WordPress的方法:选购虚拟主机或VPS
  12. 如何实现WordPress站点的自动化部署
  13. 如何优化Linux服务器设置实现安全加固
  14. 如何压缩WordPress站点图片并设置CDN
  15. 第四部分 WordPress的维护优化与安全加固
    WordPress数据管理:学习导入导出数据、清理冗余数据
  16. 动态数据调取优化:为WordPress站点添加配置Redis缓存
  17. 页面速度优化:为WordPress站点添加配置fastcgi缓存
  18. 优化WordPress的安全设置,实现站点的安全加固
  19. 第五部分 WordPress主题及插件进阶研究
    WordPress主题的选择与站点设计基础知识
  20. 善用WordPress插件:优秀插件推荐及其使用
  21. 学习使用Kadence Blocks优化页面设计
  22. 学习使用Jetengine为WordPress创建管理动态内容
  23. 学习使用LearnDash创建 WordPress 学习管理系统
  24. 学习使用Woocommerce创建网上商店
  25. 第六部分 内容创作者的WordPress:迈向Web3
    如何通过WordPress打造个人品牌:一个简易指南
  26. AI时代的内容创作:文章配图与音视频版本生成
  27. 如何使用JPG Store铸造基于Cardano链的NFT
  28. 为WordPress添加比特币收款和比特币支付网关
  29. 为WordPress添加Cardano支付网关和Cardano钱包登录
  30. 为WordPress添加以太坊支付网关和以太坊钱包登录
  31. WordPress用户管理与会员管理、内容门控
  32. 第七部分 WordPress汉化与设计优化
    WordPress主题、插件的汉化:Poedit 使用教程
  33. 为WordPress站点添加自定义字体、繁简体转换、多语言
  34. 如何通过调整CSS美化WordPress站点细节
  35. 如何开发自定义插件完善WordPress功能
  36. WordPress的功能扩展:FSE与Interactivity API
  37. 第八部分 AI时代的WordPress实践
    AI赋能WordPress开发:技术实践与未来展望
  38. Trilium RSS Digest 插件使用教程
  39. Cardano NFT Minter 插件使用教程
  40. Trilium AI Design 插件使用教程
課 16 的 40
In Progress

动态数据调取优化:为WordPress站点添加配置Redis缓存

Brave 2024-02-01

在WordPress网站运营中,数据库查询往往是制约网站性能的关键瓶颈。每当访客浏览页面时,WordPress都需要从MySQL数据库中读取文章内容、用户信息、配置选项等数据。当网站流量增长或内容规模扩大时,频繁的数据库查询会导致服务器响应变慢,用户体验下降,甚至可能引发服务器过载。

Redis缓存技术正是解决这一问题的利器。通过将高频访问的数据存储在内存中,Redis可以将数据读取速度提升数十倍甚至上百倍,从而显著改善WordPress站点的整体性能表现。

本节课程将带你深入了解Redis的工作原理,并手把手指导你完成WordPress站点的Redis缓存配置。


一、理解Redis缓存

1.1 什么是Redis?

Redis(Remote Dictionary Server,远程字典服务)是一种开源的内存数据结构存储系统,可用于数据库、缓存和消息代理等多种场景。它支持多种数据结构,例如字符串、哈希、列表、集合、有序集合等。

🔑 Redis的核心特性包括:

特性说明
内存存储数据存储在RAM中,读写速度极快(微秒级响应)
持久化支持支持RDB快照和AOF日志两种持久化方式,防止数据丢失
数据结构丰富支持String、Hash、List、Set、Sorted Set、Stream等多种数据类型
原子操作所有操作都是原子性的,保证数据一致性
主从复制支持读写分离和高可用架构
集群模式Redis 7.x版本(2024-2025年更新)进一步优化了集群性能和稳定性

1.2 为什么WordPress需要Redis缓存?

📊 WordPress的数据库查询问题:

WordPress默认使用MySQL数据库存储所有数据。当用户访问一个页面时,WordPress可能需要执行数十甚至上百次数据库查询来:

  • 读取文章内容和元数据
  • 获取主题和插件的配置选项
  • 加载小工具(Widgets)数据
  • 查询用户权限和会话信息
  • 处理分类、标签等分类法数据

⚡ Redis Object Cache的工作原理:

传统流程(无缓存):
用户请求 → WordPress → MySQL查询 → 返回数据 → 渲染页面
         (每次都需要查询数据库,耗时较长)

优化流程(Redis缓存):
首次请求:用户请求 → WordPress → MySQL查询 → 数据存入Redis → 返回数据
后续请求:用户请求 → WordPress → Redis读取 → 返回数据(跳过MySQL)
         (内存读取,速度提升10-100倍)

📈 性能提升实测数据(参考值):

指标无缓存启用Redis提升幅度
数据库查询次数50-200次/页5-20次/页减少70-90%
页面生成时间800-2000ms100-300ms提升3-8倍
服务器CPU占用降低50-70%
并发承载能力较低较高提升2-5倍

💡 重要提示: Redis Object Cache主要优化的是WordPress的对象缓存(Object Cache),这与页面缓存(Page Cache)是不同层面的优化。建议同时配置页面缓存插件(如WP Super Cache、W3 Total Cache或LiteSpeed Cache)与Redis Object Cache,实现多层缓存架构,获得最佳性能表现。


二、Redis环境安装与配置

2.1 安装Redis服务器

在安装Redis缓存之前,你需要先在服务器上安装Redis服务。以下是不同环境下的安装方法:

📌 方法一:通用Linux服务器(Ubuntu/Debian)

# 更新软件包列表
sudo apt update

# 安装Redis服务器
sudo apt install redis-server -y

# 启动Redis服务
sudo systemctl start redis-server

# 设置开机自启
sudo systemctl enable redis-server

# 验证Redis是否正常运行
redis-cli ping
# 如果返回 "PONG",说明安装成功

🔧 Redis基础配置优化(可选但推荐):

# 编辑Redis配置文件
sudo nano /etc/redis/redis.conf

建议修改的关键配置项:

# 最大内存限制(根据服务器配置调整,建议预留系统内存的20-30%)
maxmemory 256mb

# 内存淘汰策略(推荐使用allkeys-lru,当内存不足时优先删除最近最少使用的键)
maxmemory-policy allkeys-lru

# 绑定地址(如果Redis与WordPress在同一服务器,保持127.0.0.1即可)
bind 127.0.0.1

# 禁用危险命令(生产环境安全建议)
rename-command FLUSHDB ""
rename-command FLUSHALL ""
rename-command CONFIG ""
# 重启Redis使配置生效
sudo systemctl restart redis-server

📌 方法二:YunoHost环境

如果你使用YunoHost搭建的WordPress站点,可以按照以下步骤操作:

  1. 登录到你的YunoHost服务器
  2. 打开终端或SSH会话
  3. 使用root权限或具有sudo权限的用户,安装Redis服务器:
sudo yunohost app install redis

⚠️ 注意: 在YunoHost上,默认情况下,Redis服务器监听在本地地址 127.0.0.1 和端口号 6379 上。

📌 方法三:宝塔面板环境

如果你使用宝塔面板管理服务器,安装Redis更加便捷:

  1. 登录宝塔面板后台
  2. 进入「软件商店」→「运行环境」
  3. 找到Redis并点击「安装」
  4. 安装完成后,点击Redis的「设置」可进行配置调整

📌 方法四:Docker环境

对于使用Docker部署的WordPress站点:

# 拉取Redis官方镜像
docker pull redis:7-alpine

# 运行Redis容器
docker run -d \
  --name wordpress-redis \
  --restart unless-stopped \
  -p 127.0.0.1:6379:6379 \
  redis:7-alpine redis-server --maxmemory 256mb --maxmemory-policy allkeys-lru

2.2 安装PHP Redis扩展

⚠️ 重要前提: 为了让WordPress能够与Redis通信,你的服务器必须安装PHP的Redis扩展。

# Ubuntu/Debian系统(以PHP 8.2为例)
sudo apt install php8.2-redis -y

# 重启PHP-FPM服务
sudo systemctl restart php8.2-fpm

# 验证扩展是否安装成功
php -m | grep redis
# 如果输出 "redis",说明安装成功

📝 PHP版本说明:

PHP版本支持状态(截至2026年)建议
PHP 7.4❌ 已停止安全更新强烈建议升级
PHP 8.0❌ 已停止安全更新建议升级
PHP 8.1⚠️ 仅安全更新可继续使用
PHP 8.2✅ 活跃支持推荐使用
PHP 8.3✅ 活跃支持推荐使用
PHP 8.4✅ 最新版本需确认插件兼容性

三、WordPress Redis插件配置

3.1 安装Redis Object Cache插件

Redis Object Cache是一个WordPress插件,它可以将WordPress的对象缓存存储到Redis中,从而减少MySQL数据库的查询次数。你可以在WordPress插件库中找到它。

安装步骤:

  1. 登录WordPress管理后台
  2. 进入「插件」→「安装插件」
  3. 搜索 "Redis Object Cache"
  4. 找到由 Till Krüss 开发的插件(⭐ 最受欢迎的Redis缓存插件)
  5. 点击「现在安装」,然后「启用」

📌 插件信息:

  • 插件名称:Redis Object Cache
  • 作者:Till Krüss
  • 当前版本:2.5.x(截至2025年末)
  • 下载量:200万+活跃安装

3.2 配置wp-config.php

🔧 在启用缓存之前,你需要在WordPress配置文件中添加Redis连接信息:

# 编辑wp-config.php文件
sudo nano /var/www/your-site/wp-config.php

/* That's all, stop editing! */ 这行之前添加以下配置:

/* Redis缓存配置 */
define('WP_REDIS_HOST', '127.0.0.1'); 
define('WP_REDIS_PORT', 6379);  
// define('WP_REDIS_PASSWORD', 'your_password'); // 如果设置了密码,取消注释并填写
define('WP_REDIS_DATABASE', 0);             // 使用的Redis数据库编号(0-15)
define('WP_REDIS_TIMEOUT', 1);              // 连接超时时间(秒)
define('WP_REDIS_READ_TIMEOUT', 1);         // 读取超时时间(秒)

/* 可选:缓存键前缀(多站点环境必须配置,避免缓存冲突) */
define('WP_REDIS_PREFIX', 'mysite_');

/* 可选:禁用缓存的管理员用户(调试时有用) */
// define('WP_REDIS_DISABLED', false);

🌐 多站点/多WordPress实例重要提示:

如果你的服务器上运行多个WordPress站点且共用同一个Redis实例,必须为每个站点设置不同的 WP_REDIS_PREFIXWP_REDIS_DATABASE,否则会发生缓存数据混淆,导致严重问题。

// 站点A配置
define('WP_REDIS_PREFIX', 'site_a_');

// 站点B配置
define('WP_REDIS_PREFIX', 'site_b_');

// 或者使用不同的数据库编号
// 站点A使用数据库0
define('WP_REDIS_DATABASE', 0);
// 站点B使用数据库1
define('WP_REDIS_DATABASE', 1);

3.3 启用Redis Object Cache

完成上述配置后:

  1. 在WordPress管理界面的左侧菜单中,选择「设置」→「Redis」
  2. 在Redis设置页面,点击 「Enable Object Cache」 按钮
  3. 如果一切配置正确,你将看到状态显示为 "Connected""已连接"

✅ 成功启用的标志:

  • 状态显示:Connected(已连接)
  • 显示Redis服务器版本信息
  • 显示当前缓存的键数量
  • 无错误警告信息

四、PHP配置优化

📌 背景说明: 在配置Redis缓存的过程中,你可能还需要调整PHP的相关配置,以确保WordPress能够正常处理较大的文件上传和复杂的缓存操作。

如果你使用PHP-FPM,需要修改对应的配置文件:

# 根据你的PHP版本调整路径(以PHP 8.2为例)
sudo nano /etc/php/8.2/fpm/pool.d/www.conf

建议优化的配置项:

; 上传文件大小限制
php_admin_value[upload_max_filesize] = 64M

; PHP内存限制(Redis缓存操作可能需要更多内存)
php_admin_value[memory_limit] = 256M

; POST数据大小限制
php_admin_value[post_max_size] = 64M

; 脚本执行时间限制
php_admin_value[max_execution_time] = 300

; 输入变量数量限制(复杂表单可能需要)
php_admin_value[max_input_vars] = 3000
# 重启PHP-FPM使配置生效
sudo systemctl restart php8.2-fpm

💡 注意: 原文中提到的 PHP 7.3 版本已于2021年停止安全更新支持。强烈建议升级到PHP 8.2或更高版本,以获得更好的性能和安全性。WordPress 6.4+版本已正式推荐使用PHP 8.1或更高版本。


五、测试与验证

5.1 验证Redis连接状态

方法一:通过WordPress后台

进入「设置」→「Redis」,查看连接状态和统计信息。

方法二:通过命令行

# 连接到Redis命令行
redis-cli

# 查看所有WordPress相关的缓存键
KEYS *wp*

# 查看Redis内存使用情况
INFO memory

# 查看缓存命中统计
INFO stats

5.2 性能测试对比

建议使用以下工具进行前后对比测试:

工具用途使用方式
Query Monitor插件查看数据库查询次数和耗时WordPress插件,安装后在工具栏显示
GTmetrix页面加载速度测试在线工具:gtmetrix.com
Google PageSpeed Insights综合性能评分在线工具:pagespeed.web.dev
WebPageTest详细的瀑布流分析在线工具:webpagetest.org

📊 测试建议:

  1. 在启用Redis之前,先记录一次基准测试数据
  2. 启用Redis后,清除所有缓存,等待缓存预热
  3. 再次进行测试,对比前后差异
  4. 重点关注:数据库查询次数、TTFB(首字节时间)、页面完全加载时间

六、故障排除

6.1 常见问题及解决方案

问题可能原因解决方案
无法连接RedisRedis服务未启动sudo systemctl start redis-server
"Connection refused"错误端口或地址配置错误检查wp-config.php中的HOST和PORT设置
PHP报错"Class Redis not found"PHP Redis扩展未安装安装php-redis扩展并重启PHP-FPM
缓存启用后网站异常缓存数据损坏或配置冲突在Redis设置页面点击"Flush Cache"清除缓存
多站点缓存混乱未设置独立的缓存前缀为每个站点配置不同的WP_REDIS_PREFIX
内存不足警告Redis maxmemory设置过低增加maxmemory配置值

6.2 Redis维护命令

# 查看Redis运行状态
sudo systemctl status redis-server

# 查看Redis日志
sudo tail -f /var/log/redis/redis-server.log

# 手动清除所有缓存(谨慎使用)
redis-cli FLUSHDB

# 查看当前连接数
redis-cli CLIENT LIST

# 实时监控Redis命令
redis-cli MONITOR

七、安全最佳实践

🔐 生产环境安全配置建议:

  1. 设置访问密码

    # 编辑redis.conf
    requirepass your_strong_password_here
    
  2. 限制绑定地址

    # 仅允许本地访问
    bind 127.0.0.1 ::1
    
  3. 禁用危险命令

    rename-command FLUSHDB ""
    rename-command FLUSHALL ""
    rename-command CONFIG ""
    rename-command DEBUG ""
    
  4. 启用防火墙规则

    # 确保6379端口不对外开放
    sudo ufw deny 6379
    
  5. 定期更新Redis版本
    • 关注Redis安全公告
    • 及时应用安全补丁

八、课程总结

核心知识点回顾

Redis是什么:开源内存数据存储,可作为WordPress的高速缓存层

为什么需要Redis:减少数据库查询,提升页面加载速度,降低服务器负载

安装流程:安装Redis服务器 → 安装PHP扩展 → 安装WordPress插件 → 配置连接

关键配置:wp-config.php中的连接参数、多站点的缓存前缀隔离

性能验证:使用Query Monitor等工具对比启用前后的数据库查询次数

安全防护:设置密码、限制访问、禁用危险命令

进阶学习方向

如果你希望进一步优化WordPress性能,可以探索以下主题:

  • 🚀 页面缓存:配合Nginx FastCGI Cache或LiteSpeed Cache实现全页缓存
  • 🖼️ CDN加速:使用Cloudflare、又拍云等CDN服务加速静态资源
  • 🗄️ 数据库优化:定期清理冗余数据、优化数据表、使用MySQL查询缓存
  • 📦 PHP OPcache:启用PHP字节码缓存进一步提升执行效率
  • 🔄 Redis Sentinel/Cluster:高可用Redis架构(适用于大型站点)

回复