网站访问慢的主要瓶颈往往是数据库查询。Redis作为内存缓存层,可以将频繁访问的数据缓存到内存中,将数据库查询时间从毫秒级降低到微秒级。本文介绍几种常见的Redis加速方案,适用于WordPress、PHP应用和Nginx反向代理场景。
Tip: 如果还没有安装Redis,请先参考VPS安装Redis教程。
PHP应用使用Redis需要安装对应的扩展:
# Ubuntu/Debian
apt install php-redis -y
# 如果使用特定PHP版本
apt install php8.2-redis -y
# CentOS(需要EPEL和Remi源)
dnf install php-redis -y
# 验证扩展已加载
php -m | grep redis
# 重启PHP-FPM
systemctl restart php8.2-fpm
WordPress每次加载页面都会执行大量数据库查询。启用Redis对象缓存后,这些查询结果会被缓存到内存中,后续访问直接从Redis读取,速度提升明显。
方法1:使用Redis Object Cache插件(推荐)
在WordPress后台安装"Redis Object Cache"插件(作者:Till Kruss),然后在wp-config.php中添加Redis连接配置:
// 在wp-config.php中,"That's all"注释之前添加:
// Redis配置
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_PASSWORD', 'YourRedisPassword');
define('WP_REDIS_DATABASE', 0); // 使用第0个数据库
define('WP_REDIS_TIMEOUT', 1);
define('WP_REDIS_READ_TIMEOUT', 1);
// 如果一个Redis实例服务多个WordPress站点,设置唯一前缀
define('WP_REDIS_PREFIX', 'site1_');
保存后在WordPress后台的"设置 > Redis"页面点击"Enable Object Cache"启用。
方法2:手动部署object-cache.php
# 下载object-cache.php(以Redis Object Cache插件为例)
# 插件安装后会自动将drop-in文件放到wp-content/目录
# 也可以手动复制:
cp wp-content/plugins/redis-cache/includes/object-cache.php wp-content/object-cache.php
启用后通过以下方式验证Redis缓存是否生效:
# 查看Redis中的WordPress缓存键
redis-cli -a YourRedisPassword
KEYS site1_*
DBSIZE
# 查看缓存命中统计
INFO stats
# 关注 keyspace_hits 和 keyspace_misses
# 命中率 = hits / (hits + misses)
也可以在WordPress后台"设置 > Redis"页面查看连接状态和缓存统计。一般启用Redis对象缓存后,WordPress后台加载时间可以减少30-50%,数据库查询次数减少60-80%。
将PHP Session从文件系统迁移到Redis,可以提升Session读写速度并支持多服务器共享Session:
# 编辑PHP配置文件
nano /etc/php/8.2/fpm/php.ini
# 修改Session处理器
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379?auth=YourRedisPassword&database=1"
# 重启PHP-FPM
systemctl restart php8.2-fpm
也可以在Nginx的server配置中针对特定站点设置:
# 在Nginx的PHP配置段中添加
location ~ \.php$ {
fastcgi_param PHP_VALUE "session.save_handler=redis \n session.save_path=\"tcp://127.0.0.1:6379?auth=YourRedisPassword&database=1\"";
# ... 其他fastcgi配置
}
验证Session是否写入Redis:
redis-cli -a YourRedisPassword -n 1
KEYS PHPREDIS_SESSION*
对于访问量大的站点,可以将整个页面HTML缓存到Redis中,实现极速响应:
WordPress全页面缓存:
使用"WP Super Cache"或"W3 Total Cache"等插件,配合Redis后端实现。以W3 Total Cache为例:
// wp-config.php中添加
define('W3TC_EDGE_MODE', true);
// W3 Total Cache设置中:
// Page Cache > Cache Method > Redis
// Database Cache > Cache Method > Redis
// Object Cache > Cache Method > Redis
Redis默认提供16个数据库(0-15),可以为不同用途分配不同的数据库编号,避免键名冲突:
# 数据库分配建议
# 0 - WordPress对象缓存
# 1 - PHP Session
# 2 - 页面缓存
# 3 - 应用自定义缓存
# 切换数据库
redis-cli -a YourRedisPassword
SELECT 1
KEYS *
# 清空指定数据库
FLUSHDB # 只清空当前选中的数据库
合理配置缓存淘汰策略,避免内存溢出:
# redis.conf配置
# 设置最大内存(根据VPS内存调整)
maxmemory 128mb
# 淘汰策略(推荐allkeys-lru)
maxmemory-policy allkeys-lru
# allkeys-lru: 所有key中淘汰最近最少使用的
# volatile-lru: 仅淘汰设置了过期时间的key中最近最少使用的
# allkeys-random: 随机淘汰
# noeviction: 不淘汰,内存满时写入报错
重启Redis:
systemctl restart redis-server
# 实时监控Redis状态
redis-cli -a YourRedisPassword INFO stats
# 关键指标
# keyspace_hits: 缓存命中次数
# keyspace_misses: 缓存未命中次数
# used_memory_human: 内存使用量
# connected_clients: 当前连接数
# evicted_keys: 被淘汰的key数量
# 实时监控所有命令
redis-cli -a YourRedisPassword MONITOR
# 查看慢日志
redis-cli -a YourRedisPassword SLOWLOG GET 10
# 查看内存使用详情
redis-cli -a YourRedisPassword INFO memory
使用Redis缓存是VPS建站优化中性价比最高的方案之一,配合BBR加速和内核参数优化可以进一步提升网站整体性能。
Tip: 更多教程请查看新手教程。