dot 快速的未来即将在您所在的城市举行活动。

加入我们参加 Redis 发布会

如何在 Windows 11 上安装和使用 Redis

了解如何从 Windows 命令行控制 WSL 安装的 Redis 数据库。

如果您喜欢使用 Redis 进行网站缓存,并且您从 Windows 本地编写和测试代码,那么您将需要弄清楚如何在本地运行 Redis 数据库的实例。

您有几个选择。您可以 从另一台计算机运行它,该计算机运行 MacOS 或类似 Linux 的系统。您可以在 Windows 下的 Docker 容器中运行它。或者,您可以直接从 Windows 子系统 (WSL) for Linux 运行它。

这个过程是我自己弄明白的,所以请将本教程视为“一个技术人员的经验”。可能还有其他方法可以实现这一点,但对我来说这有效。

开始使用 WSL

Windows(Windows 10、Windows 11、Windows Server 2019)有一个兼容性层,允许您运行 Linux 二进制可执行文件。当前版本是 WSL 2,但我将其称为 WSL。

如果您还没有安装 WSL,请从提升的 shell(以管理员身份)运行以下命令

wsl --install
Installing WSL via the command line
通过命令行安装 WSL

这将安装您需要的部分,然后要求您重新启动计算机。(有关安装和配置 WSL 的更多信息,Microsoft 有 很好的文档。)

本质上,一旦您拥有 WSL,使 Redis 工作起来就是一个正常的 Ubuntu 部署。

Ubuntu 是 WSL 的默认 Linux 发行版。重新启动后,您可能会看到 Ubuntu shell 一段时间,因为 Windows 正在进行安装。它会运行一段时间,然后要求您输入用户名和密码。该密码将是您的 sudo(用户 root)密码。

完成后,您应该看到类似以下内容。

The final step of installing WSL is configuring the default Linux distribution.
安装 WSL 的最后一步是配置默认的 Linux 发行版。

接下来要做的就是安装 Redis 数据库。在我们能够通过 apt-get 安装 Redis 之前,我们需要更新 apt-get 并删除一些新的安装亮点。

sudo apt-get update
sudo apt-get upgrade

在 WSL 上安装 Redis 服务器

完成后,您可以安装 Redis 数据库

sudo apt-get install redis-server

有一些运行,最终安装成功。

Redis 不会开箱即用。但是,对于我自己的应用程序测试,我需要测试 Redis 未运行时的场景。因此,我个人更喜欢只在我积极使用它进行开发时才运行 Redis。因此,我喜欢从命令行启动和停止它。以下是一些您需要知道的命令

sudo service redis-server status
sudo service redis-server start
sudo service redis-server stop

我使用 service start 命令启动 redis,它会返回一条消息,表明 redis 正在启动。您可以使用 service status 命令来验证它是否正在运行。最关键的测试是连接到 Redis 并查看它是否正常工作。您可以使用 redis-cli 工具来设置和获取缓存值。

您应该看到类似以下内容

Running redis-cli from the Ubuntu shell
从 Ubuntu shell 运行 redis-cli

因此现在 Redis 数据库正在运行。如果您关闭 shell 并打开一个新的 shell,Redis 仍然会运行。如果您重新启动 WSL 或 Windows,那么 Redis 将不会运行。

如果适合您的需求,您可以使用 systemctl 使其在启动时启动。

您可以随时打开一个 Ubuntu shell 并启动 Redis,但您也可以从 Windows 命令行执行此操作

wsl sudo service redis-server status
Running Redis commands from PowerShell
从 PowerShell 运行 Redis 命令

从截图中可以看出,WSL 将 sudo service 命令传递给了 Ubuntu。因为我使用了 sudo,所以系统提示我输入 root 密码,它返回了我在 Ubuntu shell 中看到的消息。

由于我只安装了 Ubuntu,因此它是接收命令的默认 Linux。如果您安装了多个发行版,您将使用 wsl -d DistributionName。您可以使用 wsl -l 命令获取已安装发行版的名称。与 Linux shell 不同,每次调用 sudo 时,系统都会提示我输入密码。在 Linux shell 中,您只会在终端会话中第一次调用 sudo 时才会收到提示。

在开发系统上反复输入 root 密码可能会很乏味。有一个方法可以解决这种烦恼。您可以将一个文件添加到 Linux 发行版中的 /etc/sudoers.d 文件夹,并删除 redis-server 服务的 root 密码要求。从 Linux shell 中执行以下操作

cd /etc/sudoers.d
sudo sh
echo "%sudo ALL=(ALL) NOPASSWD: /usr/sbin/service redis-server *" >> allowed-services
sudo chmod 0440 allowed-services
exit

我们刚刚完成了什么?通过这组命令,我们使 /etc/sudoers.d 成为当前文件夹。您需要 root 权限才能使用此文件夹;使用 sudo sh 获取 root 权限。echo 行基本上表示您可以对 redis-server 无密码地调用 sudo,并且它会将该设置写入名为 allowed-services 的文件。文件名 allowed-services 是任意的;我选择它是因为它对我来说有意义。名为 READMEsudoers.d 文件夹中的文件解释了文件名限制。

命令 chmod 0440 将权限设置为 root 帐户的只读权限,这是 sudoers.d 所需的。这使我们能够删除 redis-server sudo 密码要求,并且只对 redis-server 有效。

现在我们可以返回到 Windows shell 并运行 wsl 命令,而不会被提示输入密码。

您甚至可以从 PowerShell 运行 redis-cli 工具

Redis from PowerShell with no password
来自 PowerShell 的 Redis,无需密码

Windows 子系统 for Linux 是开发人员的隐藏宝石之一。而这颗宝石闪耀。

使用 Redis 与 PowerShell

奖励环节!因为我懒,所以我在 PowerShell 配置文件中创建了快捷方式。我添加了以下函数

# Check Redis status
function redstat {wsl sudo service redis-server status}
# Start the Redis service
function redstart {wsl sudo service redis-server start}
# Stop the Redis service
function redstop {wsl sudo service redis-server stop}
# Clear all of the data from the Redis database
function redclear {wsl redis-cli FLUSHALL}

现在,我可以通过 redstat 检查 redis-server 状态

Calling the redstat function defined in PowerShell with the results from the redis-cli command
调用在 PowerShell 中定义的 redstat 函数,并显示来自 redis-cli 命令的结果

如何在 Windows 启动时启动 Redis

另一个奖励环节!如果您希望 Redis 在 Windows 启动时启动,则需要执行一些额外的步骤。您只需要创建一个启动 Redis 的批处理文件。

在您的 Windows 启动文件夹中,创建一个批处理文件。按 Win+R 并输入 shell:startup 以在用户启动文件夹中打开一个 Windows 资源管理器的实例。或者使用以下命令行将您放置到同一个文件夹。

cd %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup

在该文件夹中创建一个批处理文件。我使用了 start redis.cmd,但任何操作系统识别为批处理文件的名称都可以使用。在该文件中,添加以下行

 wsl sudo service redis-server start

下次您启动计算机并登录后,Redis 将启动。由于启动文件夹中的命令倾向于在引导过程中较晚运行,因此它们可能在您登录 Windows 后的一分钟内不可用。

现在您已经安装并运行了 Redis,是时候学习如何使用它了。 入门 指南应该是您的第一步。

本文的先前版本出现在Chris Miller 的博客上。