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: ConnectedDrop-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=redisSESSION_DRIVER=redis 即可。

第 6 步 —— 验证性能提升

实时监控缓存活动:

redis-cli -a 'YOUR_STRONG_PASSWORD_HERE' monitor

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

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

使用 abcurl 对页面在启用 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.