Redis 是一个开源的键值存储,既可以作为内存存储也可以作为缓存运行。Redis 是一种数据结构服务器,可以单独用作数据库服务器,也可以与 MySQL 等关系数据库配对以加快速度,就像我们在本教程中所做的那样。
在本教程中,Redis 将被配置为 WordPress 的缓存,以减轻用于呈现 WordPress 页面的冗余且耗时的数据库查询。结果是一个更快的 WordPress 站点,使用更少的数据库资源,并提供了一个可调的持久缓存。本指南适用于 Ubuntu 14.04。
虽然每个站点都不同,但下面是一个默认 Wordpress 安装主页的示例基准测试,其中包含和不包含 Redis,如本指南中配置的那样。Chrome 开发人员工具用于在禁用浏览器缓存的情况下进行测试。
没有 Redis 的默认 WordPress 主页:
804ms 页面加载时间
带有 Redis 的默认 WordPress 主页:
449ms 页面加载时间
注意:这个用于 WordPress 的 Redis 缓存实现依赖于一个注释良好的第三方脚本。该脚本托管在 DigitalOcean 的资产服务器上,但是是在外部开发的。如果您想为 WordPress 制作自己的 Redis 缓存实现,则需要根据此处介绍的概念做更多的工作。
Memcached 也是一种流行的缓存选择。然而,在这一点上,Redis 可以做 Memcached 可以做的所有事情,而且功能集要大得多。这个Stack Overflow 页面包含一些一般信息,作为对 Redis 新手的概述或介绍。
首次加载 WordPress 页面时,会在服务器上执行数据库查询。Redis 会记住或缓存此查询。因此,当另一个用户加载 Wordpress 页面时,结果会从 Redis 和内存中提供,而无需查询数据库。
本指南中使用的 Redis 实现用作 WordPress 的持久对象缓存(无过期)。对象缓存通过在内存中缓存加载 WordPress 页面所需的 SQL 查询来工作。
当页面加载时,生成的 SQL 查询结果由 Redis 从内存中提供,因此查询不必命中数据库。结果是页面加载时间更快,服务器对数据库资源的影响更小。如果查询在 Redis 中不可用,则数据库提供结果,Redis 将结果添加到其缓存中。
如果在数据库中更新了某个值(例如,在 WordPress 中创建了一个新帖子或页面),则该查询的 Redis 值将失效,以防止出现错误的缓存数据。
如果遇到缓存问题,可以使用flushall
Redis 命令行中的命令清除 Redis 缓存:
redis-cli
看到提示后,键入:
flushall
在开始本指南之前,您需要设置一个 sudo 用户并安装 WordPress。
为了在 WordPress 中使用 Redis,需要安装两个包:redis-server
和php5-redis
. 该redis-server
包提供了 Redis 本身,而该php5-redis
包为 WordPress 等 PHP 应用程序提供了一个 PHP 扩展,以与 Redis 进行通信。
安装软件:
sudo apt-get install redis-server php5-redis
Redis 既可以用作 NoSQL 数据库存储,也可以用作缓存。对于本指南和用例,Redis 将被配置为缓存。为此,需要进行以下设置。
编辑文件/etc/redis/redis.conf
并在底部添加以下行:
sudo nano /etc/redis/redis.conf
在文件末尾添加这些行:
maxmemory 256mb
maxmemory-policy allkeys-lru
更改完成后,保存并关闭文件。
这个 WordPress 的 PHP 脚本最初是由Eric Mann开发的。它是 WordPress 的 Redis 对象缓存后端。
下载object-cache.php
脚本。此下载来自 DigitalOcean 的资产服务器,但这是第三方脚本。您应该阅读脚本中的注释以了解它是如何工作的。
下载 PHP 脚本:
wget https://assets.digitalocean.com/articles/wordpress_redis/object-cache.php
将文件移动到/wp-content
WordPress 安装目录:
sudo mv object-cache.php /var/www/html/wp-content/
根据您的 WordPress 安装,您的位置可能会有所不同。
接下来,编辑该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);
保存并关闭文件。
最后,重新启动redis-service
并apache2
.
重启 Redis:
sudo service redis-server restart
重启阿帕奇:
sudo service apache2 restart
使用时重启php5-fpm
;这不是 DigitalOcean 上基本安装的一部分:
sudo service php5-fpm restart
就是这样!您的 WordPress 站点现在正在使用 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 正在处理的查询很有用。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。