Redis缓存加速网站访问教程


网站访问慢的主要瓶颈往往是数据库查询。Redis作为内存缓存层,可以将频繁访问的数据缓存到内存中,将数据库查询时间从毫秒级降低到微秒级。本文介绍几种常见的Redis加速方案,适用于WordPress、PHP应用和Nginx反向代理场景。

Tip: 如果还没有安装Redis,请先参考VPS安装Redis教程

一、安装PHP 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对象缓存

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

三、验证WordPress缓存效果

启用后通过以下方式验证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

将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多数据库隔离

Redis默认提供16个数据库(0-15),可以为不同用途分配不同的数据库编号,避免键名冲突:

# 数据库分配建议
# 0 - WordPress对象缓存
# 1 - PHP Session
# 2 - 页面缓存
# 3 - 应用自定义缓存

# 切换数据库
redis-cli -a YourRedisPassword
SELECT 1
KEYS *

# 清空指定数据库
FLUSHDB    # 只清空当前选中的数据库

七、Redis缓存策略配置

合理配置缓存淘汰策略,避免内存溢出:

# 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状态
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: 更多教程请查看新手教程
关于本站

搬瓦工VPS中文网(bwgvps.com)是非官方中文信息站,整理搬瓦工 BandwagonHost 的优惠信息、使用教程和方案对比,方便中文用户选购和使用。

新手必读
搬瓦工优惠码

当前最大折扣优惠码:

NODESEEK2026(优惠 6.77%)

在购买方案时填入优惠码即可自动抵扣。详见 优惠码使用教程