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

2024-02-18

我想在 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 中的端口指令(例如编辑为 7379,就像我对下面的命令所做的那样)。

然后启动服务

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 安装 redis 模块(https://pypi.org/project/redis/ https://pypi.org/project/redis/):

pip install redis

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

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

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

1558196107.718695 "KEYS" "*"

注意:redis对于服务器在哪里并不模糊。如果您在 Windows 上安装了 cli 工具,则可以从 dos 向在 wsl 上运行的服务器发出命令:

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

反之亦然(wsl 上的 redis-cli 会很乐意连接到 Windows 上运行的 redis 服务——这就是我发现我需要指定不同端口的方式;-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以将安装在适用于 Linux 的 Windows 子系统上的 Redis 与 Windows 中的 python 应用程序一起使用吗? 的相关文章

随机推荐