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

简介

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 站点

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/1916.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Visual Studio Code macOS上尽量用Clang编译C++

在linux上惯用g编译cpp. 照理说macOS只要装了g, vscode装了C/C的扩展包: 此外配置了下列文件就可以用g编译: tasks.json (compiler build settings) launch.json (debugger settings) c_cpp_properties.json (compiler path and IntelliSense settings) 下列是用于g对以上3个配…

Kafka - Kafka 为啥抛弃 Zookeeper?

Kafka 为什么要抛弃 ZooKeeper?取代方案是怎样的?因为确实有优化空间。 Zookeeper加kafka 的架构,有三层角色: zookeeper ,提供基础的状态持久化和状态通知服务 controller ,基于zookeeper提供的服务&…

如何在Flask应用程序中使用JSON Web Tokens进行安全认证

密码、信用卡信息、个人识别号码(PIN)——这些都是用于授权和认证的关键资产。这意味着它们需要受到未经授权的用户的保护。 作为开发者,我们的任务是保护这些敏感信息,并且在我们的应用程序中实施强大的安全措施非常重要。 现在…

mybatis的SqlSession

先来看一下sqlsession接口&#xff0c;发现它为我们定义了很多对数据库数据操作的相关方法。 public interface SqlSession extends Closeable {<T> T selectOne(String var1);<T> T selectOne(String var1, Object var2);<E> List<E> selectList(Str…

PLC无线通讯技术在汽车喷涂车间机械手臂上的应用

一、项目背景 在汽车生产装配工艺中&#xff0c;机械臂目前已经广泛地应用于装配、搬运等工业生产中&#xff0c;在机械臂系列产品中&#xff0c;汽车喷漆自动控制喷涂机械装置以其独特的优势&#xff0c;能够根据油漆喷涂量的大小&#xff0c;严格控制喷嘴与喷漆面之间距离等…

flink Unsupported operand types: IF(boolean, NULL, String)

问题&#xff1a;业务方存储了NULL 字符串&#xff0c;需要处理为 null select if(anull&#xff0c;null&#xff0c;a); 结果遇到了 Unsupported operand types: IF(boolean, NULL, String)&#xff0c;根据报错反馈&#xff0c;很明显应该是没有对 null 自动转换&#xff…

vue里面事件修饰符.stop使用案例

Vue.js 事件修饰符 .stop 用于阻止事件继续传播&#xff0c;即阻止事件冒泡。这在处理父子组件之间的事件通信时特别有用&#xff0c;可以防止事件从子组件冒泡到父组件&#xff0c;或者在一个元素上绑定多个事件处理函数时&#xff0c;阻止后续事件处理函数的执行。 下面是一个…

直播预告:拥抱AI-探索AI大模型在邮件反钓鱼检测的应用

随着ChatGPT的问世&#xff0c;生成式AI技术迅速渗透到我们生活的各个角落&#xff0c;以ChatGPT为代表的生成式AI技术&#xff0c;依托其强大的AI模型和海量数据&#xff0c;赢得了广泛的欢迎。 然而&#xff0c;生成式AI的不断演进也带来了新的挑战。大型语言模型&#xff08…

前端常用的数据加密方式

前端开发中&#xff0c;数据安全是至关重要的一个方面。数据加密是保护用户隐私和信息安全的关键方法之一。 前端常用的数据加密方式涵盖了对传输数据的加密、存储数据的加密以及客户端与服务器端之间通信的加密。 1. 对称加密算法 对称加密算法使用相同的密钥进行加密和解密…

IUG-CF论文精读

Neural collaborative filtering with ideal user group labels &#xff08;具有理想用户组标签的神经协同过滤&#xff09; 论文地址&#xff1a;https://www.sciencedirect.com/science/article/pii/S0957417423023898 摘要&#xff1a; 人口统计信息是推荐系统(RSs)的关键…

社交媒体数据恢复:钉钉

在数字化办公日益普及的今天&#xff0c;钉钉作为一款综合性的企业级通讯工具&#xff0c;已经深入到众多企业和个人的工作与生活中。然而&#xff0c;在日常使用过程中&#xff0c;我们难免会遇到一些意外情况导致数据丢失的问题。本文将针对钉钉数据恢复这一主题&#xff0c;…

达梦数据库的DMRMAN工具-管理备份(备份集删除)

达梦数据库的DMRMAN工具-管理备份&#xff08;备份集删除&#xff09; 基础信息 OS版本&#xff1a; Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本&#xff1a; DM Database Server 64 V8 DB Version: 0x7000c 03134284132-20240115-215128-200811 概述 DMRM…

色彩空间转换在AI去衣技术中的应用与探索

在人工智能&#xff08;AI&#xff09;的广阔领域中&#xff0c;图像处理和计算机视觉技术一直占据着举足轻重的地位。其中&#xff0c;AI去衣技术作为一种新兴的图像处理技术&#xff0c;近年来受到了广泛关注。在AI去衣的实现过程中&#xff0c;色彩空间转换技术发挥着至关重…

文心一言 VS 讯飞星火 VS chatgpt (242)-- 算法导论17.4 1题

一、假定我们希望实现一个动态的开地址散列表。为什么我们需要当装载因子达到一个严格小于 1 的值 a 时就认为表满&#xff1f;简要描述如何为动态开地址散列表设计一个插入算法&#xff0c;使得每个插入操作的摊还代价的期望值为 O(1) 。为什么每个插入操作的实际代价的期望值…

文旅IP孵化打造抖音宣传推广运营策划方案

【干货资料持续更新&#xff0c;以防走丢】 文旅IP孵化打造抖音宣传推广运营策划方案 部分资料预览 资料部分是网络整理&#xff0c;仅供学习参考。 PPT可编辑&#xff08;完整资料包含以下内容&#xff09; 目录 文旅IP抖音运营方案 1. 项目背景与目标 - 背景&#xff1a…

【无监督+自然语言】GPT,GPT-2,GPT-3 方法概述 (Generative Pre-Traning)

主要参考 【GPT&#xff0c;GPT-2&#xff0c;GPT-3 论文精读【李沐论文精读】-2022.03.04】 https://www.bilibili.com/video/BV1AF411b7xQ/ 大语言模型综述&#xff1a; http://t.csdnimg.cn/4obR4 发展节点 2017.06 Transformer: 所有大语言模型LLMs的基础结构 , Attent…

【六十二】【算法分析与设计】买苹果_牛客题霸_牛客网,牛牛爱博弈,829. 连续整数求和,对数器找规律法,博弈论2^k移动对3取余规律,取余的性质整除性

买苹果_牛客题霸_牛客网 描述 小易去附近的商店买苹果&#xff0c;奸诈的商贩使用了捆绑交易&#xff0c;只提供6个每袋和8个每袋的包装(包装不可拆分)。 可是小易现在只想购买恰好n个苹果&#xff0c;小易想购买尽量少的袋数方便携带。如果不能购买恰好n个苹果&#xff0c;小易…

2元4mm2高精度温度湿度传感器GXHTC3

温湿度传感器芯片GXHTC3 前言&#xff1a; 该温湿度传感器为国产&#xff0c;批量价格约2元&#xff0c;精度较高&#xff0c;DHT11该被淘汰了&#xff0c;这个才是传感器。 特点 超低功耗 宽工作电压范围(1.62 – 5.5 V) 小型 DFN 封装: 2 2 0.75 mm3 典型精度: 湿度 2 %R…

创新与乐趣的融合 —— 探索我们独家录音变音芯片在学舌玩具领域的应用

一&#xff1a;概述 学舌玩具&#xff0c;又称作复读玩具或模仿玩具&#xff0c;是一类设计用来录制人声并重复播放的互动式玩具。这类玩具以其能够模仿人类语音的特性而受到小朋友和宠物主人的喜爱。这些玩具通常具有以下特点和功能&#xff1a; 1. 录音和播放功能&#xff…