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

标签 python redis windows-subsystem-for-linux

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

pip install redis

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

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

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

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 服务——这就是我发现我需要指定不同端口的方式;-)

关于python - 我可以将安装在适用于 Linux 的 Windows 子系统上的 Redis 与 Windows 中的 python 应用程序一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56200672/

相关文章:

caching - 如何从 redis-cli repl 中删除 Redis 匹配模式中的所有键?

reactjs - 在 React 项目中用与平台无关的 SASS 编译器替换 node-sass

python - 没有在 PyCharm 中添加 WSL python 解释器的菜单

python - 与语言 X 闭包相比,Python 中的闭包有哪些限制?

python - 尝试在应用程序之间使用 pyserial,但我得到了终端

Python:仅将最新的登录信息保存到文件中

python - 打印tensorflow 2.0损失函数的所有项

c# - 如何通过 StackExchange.Redis 将通用列表添加到 Redis?

c++ - 有谁知道如何将 Redis 与 Visual Studio 集成以与 C++ 一起使用

intellij-idea - 我应该告诉 Intellij 我的 WSL 文件系统区分大小写吗?