如何在 Ubuntu 14.04 上配置 Redis 缓存以加速 WordPress

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 如何在 Ubuntu 14.04 上配置 Redis 缓存以加速 WordPress

本文详细指导了如何在WordPress中配置Redis作为缓存,以提高页面加载速度和减少数据库资源消耗,包括安装Redis、配置文件和启用缓存。实例展示了配置前后页面加载时间的显著改善。

简介

Redis 是一个开源的键值存储,可以作为内存存储和缓存进行操作。Redis 是一个数据结构服务器,可以单独用作数据库服务器,也可以与关系型数据库如 MySQL 配对以加快速度,就像我们在本教程中所做的那样。

在本教程中,Redis 将被配置为 WordPress 的缓存,以减轻用于渲染 WordPress 页面的冗余且耗时的数据库查询。结果是一个 WordPress 站点,加载速度更快,使用的数据库资源更少,并提供可调的持久缓存。本指南适用于 Ubuntu 14.04。

虽然每个站点都是不同的,以下是一个默认 WordPress 安装首页的基准测试示例,包括使用和不使用本指南配置的 Redis。使用 Chrome 开发者工具进行测试,浏览器缓存已禁用。

不使用 Redis 的默认 WordPress 首页:

804ms 页面加载时间

使用 Redis 的默认 WordPress 首页:

449ms 页面加载时间

Redis vs. Memcached

Memcached 也是一个流行的缓存选择。然而,目前 Redis 可以做到 Memcached 能做的一切,并且功能集更大。这个 Stack Overflow 页面提供了一些关于 Redis 的一般信息,可作为新接触 Redis 的人的概述或介绍。

缓存是如何工作的?

第一次加载 WordPress 页面时,在服务器上执行数据库查询。Redis 记住或缓存这个查询。因此,当另一个用户加载 WordPress 页面时,结果将从 Redis 和内存中提供,而无需查询数据库。

本指南中使用的 Redis 实现作为 WordPress 的持久对象缓存(无过期时间)。对象缓存通过在内存中缓存加载 WordPress 页面所需的 SQL 查询来工作。

页面加载时,Redis 从内存中提供 SQL 查询结果,因此查询不必访问数据库。结果是更快的页面加载时间,以及对数据库资源的更少服务器影响。如果 Redis 中没有查询,则数据库提供结果,并将结果添加到其缓存中。

如果数据库中的值被更新(例如,在 WordPress 中创建了新的帖子或页面),则会使该查询的 Redis 值无效,以防止呈现错误的缓存数据。

如果遇到缓存问题,可以使用 Redis 命令行中的 flushall 命令来清除 Redis 缓存:

redis-cli

一旦看到提示符,输入:

flushall

附加参考:WordPress 对象缓存文档

先决条件

在开始本指南之前,您需要设置一个 sudo 用户并安装 WordPress。

  • Ubuntu 14.04 Droplet(建议使用 1 GB 或更高配置)
  • 添加一个 sudo 用户
  • 安装 WordPress。本指南已经使用这些说明进行了测试,尽管安装 WordPress 的方法有很多种

步骤 1 — 安装 Redis

要在 WordPress 中使用 Redis,需要安装两个软件包:redis-serverphp5-redisredis-server 软件包提供了 Redis 本身,而 php5-redis 软件包提供了一个 PHP 扩展,用于像 WordPress 这样的 PHP 应用程序与 Redis 进行通信。

安装软件:

sudo apt-get install redis-server php5-redis

步骤 2 — 配置 Redis 作为缓存

Redis 可以作为 NoSQL 数据库存储和缓存进行操作。对于本指南和用例,Redis 将被配置为缓存。为此,需要以下设置。

编辑文件 /etc/redis/redis.conf,并在文件底部添加以下行:

sudo nano /etc/redis/redis.conf

在文件末尾添加以下行:

maxmemory 256mb
maxmemory-policy allkeys-lru

完成更改后,保存并关闭文件。

步骤 3 — 获取 Redis 缓存后端脚本

这个 WordPress 的 PHP 脚本最初是由 Eric Mann 开发的。它是 WordPress 的 Redis 对象缓存后端。

下载 object-cache.php 脚本。此下载来自 DigitalOcean 的资产服务器,但这是一个第三方脚本。您应该阅读脚本中的注释,了解它的工作原理。

下载 PHP 脚本:

wget https://assets.digitalocean.com/articles/wordpress_redis/object-cache.php

将文件移动到您的 WordPress 安装的 /wp-content 目录中:

sudo mv object-cache.php /var/www/html/wp-content/

根据您的 WordPress 安装,您的位置可能会有所不同。

步骤 4 — 在 wp-config.php 中启用缓存设置

接下来,编辑 wp-config.php 文件,添加一个缓存密钥盐,使用您站点的名称(或任何您喜欢的字符串)。

nano /var/www/html/wp-config.php

* Authentication Unique Keys and Salts. 部分的末尾添加此行:

define('WP_CACHE_KEY_SALT', 'example.com');

您可以使用您的域名或其他字符串作为盐。

注意: 对于托管多个 WordPress 站点的用户,只要每个站点都有自己独特的缓存密钥盐,就可以共享同一个 Redis 安装。

此外,在 WP_CACHE_KEY_SALT 行之后添加以下行,以使用 Redis 对象缓存插件创建持久缓存:

define('WP_CACHE', true);

最终,您的文件应该如下所示:

* Authentication Unique Keys and Salts.
 
. . .
 
define('NONCE_SALT',       'put your unique phrase here');
define('WP_CACHE_KEY_SALT', 'example.com');
define('WP_CACHE', true);

保存并关闭文件。

步骤 5 — 重启 Redis 和 Apache

最后,重新启动 redis-serviceapache2

重新启动 Redis:

sudo service redis-server restart

重新启动 Apache:

sudo service apache2 restart

如果你正在使用 php5-fpm,请重新启动它;在 DigitalOcean 的基本安装中,这不是必需的:

sudo service php5-fpm restart

就是这样!你的 WordPress 站点现在正在使用 Redis 缓存。如果你检查页面加载速度和资源使用情况,你应该会注意到改进。

使用 redis-cli 监控 Redis

要监控 Redis,可以使用以下命令:

redis-cli monitor

当你运行此命令时,你将看到 Redis 实时输出缓存查询。如果你什么都没看到,请访问你的网站并重新加载页面。

以下是按照本指南配置的 WordPress 站点的示例输出,使用了 Redis:

OK
1412273195.815838 "monitor"
1412273198.428472 "EXISTS" "example.comwp_:default:is_blog_installed"
1412273198.428650 "GET" "example.comwp_:default:is_blog_installed"
1412273198.432252 "EXISTS" "example.comwp_:options:notoptions"
1412273198.432443 "GET" "example.comwp_:options:notoptions"
1412273198.432626 "EXISTS" "example.comwp_:options:alloptions"
1412273198.432799 "GET" "example.comwp_:options:alloptions"
1412273198.433572 "EXISTS" "example.comwp_site-options:0:notoptions"
1412273198.433729 "EXISTS" "example.comwp_:options:notoptions"
1412273198.433876 "GET" "example.comwp_:options:notoptions"
1412273198.434018 "EXISTS" "example.comwp_:options:alloptions"
1412273198.434161 "GET" "example.comwp_:options:alloptions"
1412273198.434745 "EXISTS" "example.comwp_:options:notoptions"
1412273198.434921 "GET" "example.comwp_:options:notoptions"
1412273198.435058 "EXISTS" "example.comwp_:options:alloptions"
1412273198.435193 "GET" "example.comwp_:options:alloptions"
1412273198.435737 "EXISTS" "example.comwp_:options:notoptions"
1412273198.435885 "GET" "example.comwp_:options:notoptions"
1412273198.436022 "EXISTS" "example.comwp_:options:alloptions"
1412273198.436157 "GET" "example.comwp_:options:alloptions"
1412273198.438298 "EXISTS" "example.comwp_:options:notoptions"
1412273198.438418 "GET" "example.comwp_:options:notoptions"
1412273198.438598 "EXISTS" "example.comwp_:options:alloptions"
1412273198.438700 "GET" "example.comwp_:options:alloptions"
1412273198.439449 "EXISTS" "example.comwp_:options:notoptions"
1412273198.439560 "GET" "example.comwp_:options:notoptions"
1412273198.439746 "EXISTS" "example.comwp_:options:alloptions"
1412273198.439844 "GET" "example.comwp_:options:alloptions"
1412273198.440764 "EXISTS" "example.comwp_:options:notoptions"
1412273198.440868 "GET" "example.comwp_:options:notoptions"
1412273198.441035 "EXISTS" "example.comwp_:options:alloptions"
1412273198.441149 "GET" "example.comwp_:options:alloptions"
1412273198.441813 "EXISTS" "example.comwp_:options:notoptions"
1412273198.441913 "GET" "example.comwp_:options:notoptions"
1412273198.442023 "EXISTS" "example.comwp_:options:alloptions"
1412273198.442121 "GET" "example.comwp_:options:alloptions"
1412273198.442652 "EXISTS" "example.comwp_:options:notoptions"
1412273198.442773 "GET" "example.comwp_:options:notoptions"
1412273198.442874 "EXISTS" "example.comwp_:options:alloptions"
1412273198.442974 "GET" "example.comwp_:options:alloptions"

CTRL-C 停止输出。

这对于查看 Redis 处理的确切查询非常有用。

结论

按照本指南的步骤进行操作后,WordPress 现在将配置为在 Ubuntu 14.04 上使用 Redis 作为缓存。

以下是一些可能感兴趣的有关 WordPress 的额外安全和管理指南:

  • 如何在 Ubuntu 上配置 WordPress 安全更新和安装
  • 如何使用 WPScan 测试 WordPress 中的易受攻击的插件和主题
  • 如何使用 WP-CLI 在命令行管理您的 WordPress 站点


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
8天前
|
缓存 NoSQL 中间件
Redis,分布式缓存演化之路
本文介绍了基于Redis的分布式缓存演化,探讨了分布式锁和缓存一致性问题及其解决方案。首先分析了本地缓存和分布式缓存的区别与优劣,接着深入讲解了分布式远程缓存带来的并发、缓存失效(穿透、雪崩、击穿)等问题及应对策略。文章还详细描述了如何使用Redis实现分布式锁,确保高并发场景下的数据一致性和系统稳定性。最后,通过双写模式和失效模式讨论了缓存一致性问题,并提出了多种解决方案,如引入Canal中间件等。希望这些内容能为读者在设计分布式缓存系统时提供有价值的参考。感谢您的阅读!
Redis,分布式缓存演化之路
|
2月前
|
存储 缓存 NoSQL
解决Redis缓存数据类型丢失问题
解决Redis缓存数据类型丢失问题
187 85
|
1月前
|
存储 监控 NoSQL
NoSQL与Redis配置与优化
通过合理配置和优化Redis,可以显著提高其性能和可靠性。选择合适的数据结构、优化内存使用、合理设置持久化策略、使用Pipeline批量执行命令、以及采用分布式集群方案,都是提升Redis性能的重要手段。同时,定期监控和维护Redis实例,及时调整配置,能够确保系统的稳定运行。希望本文对您在Redis的配置与优化方面有所帮助。
68 23
|
1月前
|
存储 缓存 NoSQL
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
云端问道21期方案教学-应对高并发,利用云数据库 Tair(兼容 Redis®*)缓存实现极速响应
|
1月前
|
缓存 NoSQL 关系型数据库
云端问道21期实操教学-应对高并发,利用云数据库 Tair(兼容 Redis®)缓存实现极速响应
本文介绍了如何通过云端问道21期实操教学,利用云数据库 Tair(兼容 Redis®)缓存实现高并发场景下的极速响应。主要内容分为四部分:方案概览、部署准备、一键部署和完成及清理。方案概览中,展示了如何使用 Redis 提升业务性能,降低响应时间;部署准备介绍了账号注册与充值步骤;一键部署详细讲解了创建 ECS、RDS 和 Redis 实例的过程;最后,通过对比测试验证了 Redis 缓存的有效性,并指导用户清理资源以避免额外费用。
|
1月前
|
缓存 NoSQL Java
Mybatis学习:Mybatis缓存配置
MyBatis缓存配置包括一级缓存(事务级)、二级缓存(应用级)和三级缓存(如Redis,跨JVM)。一级缓存自动启用,二级缓存需在`mybatis-config.xml`中开启并配置映射文件或注解。集成Redis缓存时,需添加依赖、配置Redis参数并在映射文件中指定缓存类型。适用于查询为主的场景,减少增删改操作,适合单表操作且表间关联较少的业务。
|
1月前
|
存储 监控 NoSQL
NoSQL与Redis配置与优化
通过合理配置和优化Redis,可以显著提高其性能和可靠性。选择合适的数据结构、优化内存使用、合理设置持久化策略、使用Pipeline批量执行命令、以及采用分布式集群方案,都是提升Redis性能的重要手段。
47 7
|
2月前
|
缓存 监控 NoSQL
Redis经典问题:缓存穿透
本文详细探讨了分布式系统和缓存应用中的经典问题——缓存穿透。缓存穿透是指用户请求的数据在缓存和数据库中都不存在,导致大量请求直接落到数据库上,可能引发数据库崩溃或性能下降。文章介绍了几种有效的解决方案,包括接口层增加校验、缓存空值、使用布隆过滤器、优化数据库查询以及加强监控报警机制。通过这些方法,可以有效缓解缓存穿透对系统的影响,提升系统的稳定性和性能。
|
3月前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
66 5
|
NoSQL Redis
[Redis]Redis指南二 配置
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/73863746 我们可以...
940 0