介绍
Redis 是一个开源的键值存储,既可以作为内存存储也可以作为缓存运行。 Redis 是一种数据结构服务器,可以单独用作数据库服务器,也可以与 MySQL 等关系数据库配对以加快速度,就像我们在本教程中所做的那样。
在本教程中,Redis 将被配置为 WordPress 的缓存,以减轻用于呈现 WordPress 页面的冗余且耗时的数据库查询。 结果是一个更快的 WordPress 站点,使用更少的数据库资源,并提供了一个可调的持久缓存。 本指南适用于 Ubuntu 14.04。
虽然每个站点都不同,但下面是一个默认 Wordpress 安装主页的示例基准测试,其中包含和不包含 Redis,如本指南中配置的那样。 Chrome 开发人员工具用于在禁用浏览器缓存的情况下进行测试。
没有 Redis 的默认 WordPress 主页:
804ms 页面加载时间
带有 Redis 的默认 WordPress 主页:
449ms 页面加载时间
注意: 这个用于 WordPress 的 Redis 缓存实现依赖于一个注释良好的第三方脚本。 该脚本托管在 DigitalOcean 的资产服务器上,但是是在外部开发的。 如果您想为 WordPress 制作自己的 Redis 缓存实现,则需要根据此处介绍的概念做更多的工作。
Redis 对比 内存缓存
Memcached 也是一种流行的缓存选择。 然而,在这一点上,Redis 可以做 Memcached 可以做的所有事情,而且功能集要大得多。 这个 Stack Overflow 页面 包含一些一般信息,作为对 Redis 新手的概述或介绍。
缓存是如何工作的?
首次加载 WordPress 页面时,会在服务器上执行数据库查询。 Redis 记住,或 caches,这个查询。 因此,当另一个用户加载 Wordpress 页面时,结果会从 Redis 和内存中提供,而无需查询数据库。
本指南中使用的 Redis 实现用作 WordPress 的持久对象缓存(无过期)。 对象缓存通过在内存中缓存加载 WordPress 页面所需的 SQL 查询来工作。
当页面加载时,生成的 SQL 查询结果由 Redis 从内存中提供,因此查询不必命中数据库。 结果是页面加载时间更快,服务器对数据库资源的影响更小。 如果查询在 Redis 中不可用,则数据库提供结果,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-server
和 php5-redis
。 redis-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 安装,只要它有自己唯一的缓存键 salt。
此外,在 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-service
和apache2
。
重启 Redis:
sudo service redis-server restart
重启阿帕奇:
sudo service apache2 restart
使用时重启php5-fpm
; 这不是 DigitalOcean 上基本安装的一部分:
sudo service php5-fpm restart
就是这样! 您的 WordPress 站点现在正在使用 Redis 缓存。 如果您检查页面加载速度和资源使用情况,您应该会注意到改进。
使用 redis-cli 监控 Redis
要监控 Redis,请使用 redis-cli
命令,如下所示:
redis-cli monitor
运行此命令时,您将看到 Redis 服务缓存查询的实时输出。 如果您没有看到任何内容,请访问您的网站并重新加载页面。
以下是根据本指南使用 Redis 配置的 WordPress 站点的示例输出:
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 中配置安全更新和安装