Home › Knowledge base › Skyline Cloud › 如何使用 Redis 缓存让网站更快 KNOWLEDGE BASE

如何使用 Redis 缓存让网站更快

通过将查询结果存入内存,Redis 可在毫秒内返回数据,从而降低数据库负载并加快页面响应。本文介绍在 Linux 服务器上安装、加固和调优 Redis,并将其接入 WordPress、原生 PHP 应用和 Laravel 的完整步骤。

如何使用 Redis 缓存让网站更快

为什么 Redis 能加速网站

动态网站在每次请求时都会反复重建相同的数据,从而不断地访问数据库。Redis 是一种内存数据存储,它从 RAM 中返回查询结果,耗时不到一毫秒,而无需反复查询数据库。这降低了数据库负载,并加快了页面的交付速度,在流量较大时尤为明显。

前置条件

  • 具有 root 或 sudo 权限的 Linux 服务器(Ubuntu 22.04/24.04 或类似系统)
  • 支持对象/缓存后端的 Web 应用(WordPress、Laravel 等)
  • 对于基于 PHP 的应用,需要 PHP redis 扩展

第 1 步 —— 安装 Redis

在 Debian/Ubuntu 上:

sudo apt update
sudo apt install redis-server -y

启用并确认其正在运行:

sudo systemctl enable --now redis-server
redis-cli ping

你应当看到 PONG。确认版本(建议使用 Redis 6+ 以获得 ACL 和 TLS 支持):

redis-server --version

第 2 步 —— 加固 Redis

默认情况下,Redis 仅监听 localhost,这适用于单服务器部署。在 /etc/redis/redis.conf 中确认:

bind 127.0.0.1 -::1
protected-mode yes

设置一个强密码作为纵深防御措施:

requirepass YOUR_STRONG_PASSWORD_HERE

如果必须从另一台服务器访问 Redis,应启用 TLS 并设置防火墙限制,而不是开放绑定地址。将未经身份验证的 Redis 暴露到公共互联网是一种常见的安全漏洞。

重启以应用更改:

sudo systemctl restart redis-server

测试身份验证:

redis-cli -a 'YOUR_STRONG_PASSWORD_HERE' ping

第 3 步 —— 针对缓存调优 Redis

设置内存上限和淘汰策略,以防止服务器资源耗尽。编辑 /etc/redis/redis.conf:

maxmemory 256mb
maxmemory-policy allkeys-lru
  • maxmemory 限制 RAM 使用量;通常设为可用缓存内存的 60–75%
  • allkeys-lru 在达到上限时淘汰最近最少使用的键(适用于纯缓存场景)

重启 Redis:

sudo systemctl restart redis-server

第 4 步 —— 将 WordPress 连接到 Redis

首先安装 PHP 扩展:

sudo apt install php-redis -y
sudo systemctl restart php8.3-fpm   # match your PHP version

在 wp-config.php 中、/* That's all, stop editing! */ 这一行的上方添加连接设置:

define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_PASSWORD', 'YOUR_STRONG_PASSWORD_HERE' );
define( 'WP_REDIS_PREFIX', 'site1:' );
define( 'WP_REDIS_DATABASE', 0 );

当多个站点共用同一个 Redis 实例时,WP_REDIS_PREFIX 可防止缓存冲突。

安装并启用 Redis Object Cache 插件。在仪表盘中依次进入 插件 → 安装插件,搜索 Redis Object Cache,将其激活,然后打开 设置 → Redis 并点击 启用对象缓存。或者,使用 WP-CLI:

wp plugin install redis-cache --activate
wp redis enable

确认状态:

wp redis status

输出应显示 Status: Connected 和 Drop-in: Valid。

第 5 步 —— 连接原生 PHP 应用

phpredis 扩展提供了直接的客户端访问能力。一个最简的旁路缓存(cache-aside)模式如下:

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('YOUR_STRONG_PASSWORD_HERE');

$key = 'products:featured';
$cached = $redis->get($key);

if ($cached === false) {
    $data = expensive_db_query();          // your DB call
    $redis->setex($key, 300, serialize($data)); // cache for 300s
} else {
    $data = unserialize($cached);
}

该模式先检查缓存,命中时直接返回;未命中时计算该值,以一个 TTL 将其存储,然后返回。像 Laravel 这样的框架进一步简化了这一过程——在 .env 中设置 CACHE_STORE=redis 和 SESSION_DRIVER=redis 即可。

第 6 步 —— 验证性能提升

实时监控缓存活动:

redis-cli -a 'YOUR_STRONG_PASSWORD_HERE' monitor

检查命中率以评估缓存健康状况:

redis-cli -a 'YOUR_STRONG_PASSWORD_HERE' info stats | grep keyspace

使用 ab 或 curl 对页面在启用 Redis 前后进行基准测试:

ab -n 200 -c 10 https://your-site.example/

比较多次运行的平均响应时间。数据库密集型的 WordPress 首页通常会在首字节时间(TTFB)上出现明显下降,同时 MySQL 负载也会降低。

设置项 推荐值 用途
bind 127.0.0.1 -::1 仅限本地访问
requirepass 强密钥 身份验证
maxmemory 256mb(之后再调优) 防止内存溢出(OOM)
maxmemory-policy allkeys-lru 淘汰旧的缓存键
WP_REDIS_PREFIX 每个站点唯一 避免冲突

常见陷阱

  • 没有内存上限。 若不设置 maxmemory,Redis 会耗尽所有 RAM 并使服务器崩溃
  • 缓存未生效。 仅安装插件是不够的;你必须启用 drop-in 并确认连接成功
  • 内容陈旧。 过于激进的缓存会提供过期页面;应使用合理的 TTL,并在部署时刷新缓存
  • Redis 暴露在外。 切勿在没有 TLS 和身份验证的情况下将 Redis 绑定到公网 IP

在境内云上运行

Redis 与配置得当的服务器配合得很好。Skyline Cloud 提供托管于沙特阿拉伯境内的 VPS 和云服务器,满足 PDPL 和 NCA 的合规要求。与托管型企业邮箱相结合,即可构建一套完整的基础设施。

创建你的 Skyline Cloud 账户,几分钟内即可部署一台境内服务器。

SKYLINE Engineering

@skyline

The engineering team at SKYLINE Industrial Solutions. We publish field-tested guides drawn from real KSA and GCC deployments.

See author profile
SKYLINE engineering services

Need this implemented for you?

Reading is free — building it right takes a team. SKYLINE engineers ship Skyline Cloud for Aramco vendors, banks, hospitals and government agencies across Saudi Arabia. Talk to us before you start.

Aramco Approved Contractor ISO 9001 · ISO 27001 SAMA CSF aligned NCA ECC ready 247+ KSA clients

Comments

0 total · 0 threads
Be the first to leave a comment.