通过WordPress和Docker学习Redis CLI基础知识

通过WordPress和Docker学习Redis CLI基础知识

Redis 是一种无模式的内存键值数据存储,适用于实时应用程序。开发人员可将其用作 NoSQL 数据库、辅助数据层或计算密集型进程的缓存层。

Redis 提供持久存储,可以缓存网站会话状态和其他数据。将 Redis 用作缓存层的应用程序通常会进行一次复杂的数据库查询或 API 调用,然后缓存结果。它可以快速高效地存储和检索对象。因此,对于使用更传统的关系型数据库服务器作为主要内容存储的 WordPress 来说,Redis 是一个绝佳的伴侣。

Redis 命令行界面(CLI)可用于与 WordPress 网站的 Redis 服务器通信。使用 Redis CLI(在命令行中以 redis-cli 的形式调用),你可以以编程方式请求和接收来自 Redis 服务器的响应,监控在 Redis 实例中执行的命令,检查实例的延迟,并实时观察服务器的状态。

本教程将向你展示如何将 Redis 与 WordPress 网站集成,并使用 Redis CLI 从终端执行创建、读取、更新和删除(CRUD)操作。

使用 DevKinsta 将 Redis 连接到 WordPress

为了将 WordPress 网站连接到 Redis 数据库,我们使用了 DevKinsta,这是一个免费的一键式工具包,用于从本地环境快速启动、开发和部署 WordPress 网站。

DevKinsta 可以在本地启动 Docker 化的 WordPress 网站,并提供最新版本的依赖项,包括 Nginx Web 服务器、PHP 和兼容 MySQL 的 MariaDB 数据库。它还支持 WordPress 的 CLI。

DevKinsta 适用于 Windows、Linux 和 macOS。下载 DevKinsta 时,您可以找到更多有关安装的信息。

安装完成后,使用默认主机栈在本地创建并安装一个新的 WordPress 网站

提醒:最初启动 DevKinsta 时,如果您还没有安装 Docker Desktop,它会提示您将其作为一个依赖项来安装。DevKinsta 使用 Docker Desktop 在容器内创建所有 WordPress 本地环境文件。

DevKinsta 提供三种本地创建 WordPress 网站的选项:使用默认设置的全新网站、使用自定义设置的新网站,以及将托管在 Kinsta 上的现有网站克隆到本地开发环境。

本教程使用第一个选项,使用默认设置和最新版本的 Nginx、PHP、MariaDB 和 WordPress。

完成这些步骤后,您就可以在 DevKinsta 中查看新网站的仪表板了:

创建新 WordPress 网站后的 DevKinsta 面板

创建新 WordPress 网站后的 DevKinsta 面板。

注意网站路径。这是包含本地网站文件和文件夹的目录。WP Admin 仪表盘链接显示在右上角。最后,注意网站主机,即指向新开发网站的 URL

您可以打开 Docker Desktop,列出作为 DevKinsta 项目依赖项运行的所有容器。为此,请单击左侧边栏顶部的 Containers

Docker Desktop 的 DevKinsta 容器列表

Docker Desktop 的 DevKinsta 容器列表。

现在,您的 WordPress 网站和容器依赖项已经启动并运行,您可以将 Redis 数据库连接到您的网站了:

  1. 点击 DevKinsta 中的 “WP Admin” 按钮,进入 WordPress 管理面板。
  2. 点击左侧的 插件 选项卡。
  3. 点击 安装插件,然后搜索 “Redis Object Cache”。

Redis Object Cache 插件

在 WordPress 中搜索 Redis Object Cache 插件。

单击插件旁边的立即安装。然后,单击 “已安装插件” 选项卡,确认插件已激活。

Redis Object Cache

安装 WordPress 插件,包括 Redis Object Cache。

首次激活时,Redis Object Cache 插件会报告无法连接到 Redis 数据库。我们可以通过在 Docker 中创建一个带有 Redis 实例的容器来解决这个问题。

让我们打开终端,创建一个名为 redisnet 的网络容器,在其中运行 Redis 镜像:

docker network create -d bridge redisnet

现在,以独立容器的形式在该网络容器中构建并运行 Redis 镜像:

docker run -d -p 6379:6379 --name demo_redis --network redisnet redis

启动容器镜像后,在 Docker Desktop 中验证 Redis 镜像是否已启动并运行:

运行 demo_redis 镜像的 Docker 桌面

运行 demo_redis 镜像的 Docker 桌面。

请记住,您的 WordPress 网站是在 Docker 容器中自动启动的。您可以确认其容器网络名称和 ID:

docker network ls

Docker Desktop 中的网络名称和 ID

Docker Desktop 中的网络名称和 ID。

上面,devkinsta_network 的网络 ID 的截断版本是 d1fa155f7a4d 。我们稍后将使用它。

提示:Docker 中网络和容器的 ID 长度为 64 个字符。一般来说,截断到前 12 个字符的 ID 对于引用来说足够唯一。要查看完整的 ID,请在列出 ID 的命令中使用 -no-trunc 开关。

将 Redis 集群和服务器连接到本地 WordPress 网站的一种方法是直接连接 Redis 和 DevKinsta 网络。首先,验证 Redis 的容器 ID。在这里,我们使用 Docker 命令来列出容器,并使用 -l (最新)开关来显示最近创建的容器:

docker ps -l

Docker 的 ps 命令生成的容器信息

Docker 的 ps 命令生成的容器信息。

在本例中,截断的容器 ID 显示为 c3ffc630e44c

在下面的命令中使用您的容器 ID 代替我们的 ID,将您的 Redis 容器连接到 DevKinsta 网络。

docker network connect devkinsta_network c3ffc630e44c

你应该已经成功地将 Redis 容器映像添加到 devkinsta_network 中正在运行的容器列表中。要验证 Redis 容器的网络 IP 地址,请运行以下命令,将 devkinsta_network ID 替换为在项目中使用 network ls 命令找到的 ID:

docker inspect d1fa155f7a4d

终端显示 docker inspect 命令的部分输出

终端显示 docker inspect 命令的部分输出。

在上图中,demo_redis 容器的 IP 地址是 172.172.0.6。在继续连接之前,请在你的项目中记下这个 IP 地址。

导航到本地计算机上 WordPress 网站的根目录,也就是 DevKinsta 中显示的网站路径。用文本编辑器打开 wp-config.php 文件,在自定义配置变量部分添加以下代码:

define('WP_REDIS_CLIENT', 'predis');
define('WP_REDIS_HOST', '172.172.0.6');
define('WP_REDIS_PORT', '6379');

WP_REDIS_HOST 所使用的 IP 地址,就是你在执行 docker inspect 命令时发现的 demo_redis IP 地址。

这段配置代码添加了 Redis 客户端、主机和端口,这样插件就能在与 DevKinsta 相同的 Docker 容器和网络中访问 Redis 服务器。

确认插件已连接并运行:

  1. 在管理仪表板中导航到 WordPress 插件页面。
  2. 单击 Redis 对象缓存的设置链接。
  3. 在 “设置” 页面上,单击 “Enable Object Cache” 按钮。

Redis 对象缓存

Redis 对象缓存是可写和可访问的,但需要启用。

启用 Redis 对象缓存后,其设置页面将如下所示:

Redis 已连接并正在运行

Redis 对象缓存设置页面显示 Redis 已连接并正在运行。

启动 Redis CLI

Redis CLI 工具( redis-cli )与 Redis 服务器捆绑在一起。你可以在 WindowsmacOSLinux 操作系统上安装 Redis 服务器。

不过,我们已经在 Docker 中运行了 Redis,因此可以在 demo_redis 容器中启动 CLI 工具。

上面,当我们使用 docker ps 命令时,我们知道了运行 Redis 映像的容器的 ID。我们的 ID 是 c3ffc630e44c 。我们可以使用这个截断的 ID 来定位 demo_redis,并在其中启动一个命令行 shell:

docker exec -it c3ffc630e44c /bin/sh

现在可以调用 redis-cli 工具了:

从 Docker 中的 shell 调用 redis-cli

从 Docker 中的 shell 调用 redis-cli

你可以 ping 服务器来测试连接:

ping

服务器对 redis-cli 中 ping 的响应

服务器对 redis-cli 中 ping 的响应。

要使用 Redis 服务器的 IP 地址和端口连接并测试该连接,请运行以下命令(使用 demo_redis 容器的 IP 地址):

redis-cli -h 172.172.0.6 -p 6379 ping

通过 Redis 服务器的 IP 地址和端口向其发送 ping

通过 Redis 服务器的 IP 地址和端口向其发送 ping。

你已经成功连接了本地机器和 Docker 容器上的 Redis 服务器。

接下来,使用 redis-cli 及其 keys * 命令来显示数据库中的所有键,以验证你的 WordPress 网站是否在 Redis 缓存中存储了数据:

使用星号通配符搜索检索 Redis 数据库中的所有键

使用星号通配符搜索检索 Redis 数据库中的所有键。

可以看到,一些 WordPress 数据已经保存到了 Redis 缓存中。

Redis CLI CRUD 操作

你可以使用 CLI 工具对 Redis 数据库执行 CRUD 操作。

让我们来获取从之前的 Redis CLI keys * 请求中复制的键值。

get :u.:~8r]mC->Re/gG!&mGU.[{+;]t7o<H~)c*pcU=Lx_Vs{9JkdxkL:X;M-@Y$Svwp:user_meta:1

Redis 对使用 redis-cli 提出的 "get" 请求的响应

Redis 对使用 redis-cli 提出的 “get” 请求的响应。

让我们调用 redis-cli ,使用 setgetdel 命令来创建键/值对、查询新键并删除它,从而操作 Redis 数据库的内容:

使用 redis-cli 对 Redis 数据库进行简单的 CRUD 操作

使用 redis-cli 对 Redis 数据库进行简单的 CRUD 操作。

上图中,尝试检索一个已删除键的值时,返回值为 nil

在使用 Redis CLI 时,还有更多高级操作可用。

小结

Redis CLI 是一种在网站上测试 Redis 命令的简便方法,然后再将其推送到实时环境中。它还是监控 Redis 实例活动的好方法。

在 Docker 中,Redis 实例将管理数据库所需的工具(包括 redis-cli )捆绑在一个容器中。

与此同时,DevKinsta 的 Docker 化方法可以轻松地在本地机器上开发 WordPress 网站,然后只需点击几下鼠标就能将其部署到生产环境中。

评论留言