我可以在 Windows 中将 Windows 子系统上安装的 Redis 与 Windows 中的 python 应用程序一起使用吗?

Can I use Redis installed on Windows Subsystem for Linux with a python app in Windows?

我想在 Windows 上开发一个 python 应用程序,它将使用 Redis 作为 Celery 的代理。假设我的应用程序可以与我在 Linux 的 Windows 子系统上安装的 Redis 实例交互是否正确?

我在 Windows 10 上为 Linux 启用了 Windows 子系统,并在其上安装了 Ubuntu 和 Redis,并启动了服务器。在 Windows 方面,我使用 VSCode 编写 python 代码。如下所示,在我的 python 代码中,我尝试连接到 localhost:6379

上的 Redis
from celery import Celery

BROKER_URL = 'redis://localhost:6379/0'

app = Celery('tasks', broker=BROKER_URL)

我正在尝试确认用 Windows 编写的 Python 代码是否可以与 Ubuntu 上 运行 的 Redis 服务器交互。这是否可能,如果可以,我该如何确认连接?

是的,您可以使用来自 windows 的 wsl 的 redis。首先,确保你已经安装并启动了redis服务:

sudo apt-get install redis-server
sudo systemctl enable redis-server.service

如果你已经 运行 windows 上的 redis 服务器,你需要在 /etc/redis/redis.conf 中编辑端口指令(例如,像我为下面的命令)。

然后启动服务

sudo service redis-server start

然后是 运行 redis-cli 并发出 monitor 命令(如果您使用的是默认端口,则可以跳过 -p 7379):

bp@bjorn8:~$ redis-cli -p 7379
127.0.0.1:6379> monitor
OK

现在,在 windows 命令提示符下,从 pypi (https://pypi.org/project/redis/) 安装 redis 模块:

pip install redis

然后启动 python 并发出测试命令(同样,如果您使用的是默认端口,请使用 6379):

>>> import redis
>>> cn = redis.Redis('localhost', 7379, 0)
>>> cn.keys("*")
[]

在您的 wsl 会话中,您现在应该看到如下内容:

1558196107.718695 "KEYS" "*"

注意:redis是不会模糊服务器在哪里的。如果您在 windows 上安装了 cli 工具,您可以从 dos 向服务器 运行ning 在 wsl:

上发出命令
c:\srv> redis-cli -p 7379
redis 127.0.0.1:7379> keys "*"
(empty list or set)
redis 127.0.0.1:7379>

和 vice-versa(wsl 上的 redis-cli 将愉快地连接到 windows 上的 redis 服务 运行ning —— 这就是我发现我需要指定不同的方式端口 ;-)