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

时间:2019-05-18 16:05:05

标签: 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服务器进行交互。这可能吗,如果可以,如何确认连接?

1 个答案:

答案 0 :(得分:0)

是的,您可以在Windows的wsl中使用redis。首先,请确保您已安装并启动redis服务:

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

如果您已经在Windows上运行Redis服务器,则需要在/etc/redis/redis.conf中编辑port指令(例如,就像我对以下命令所做的那样,将其更改为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会话中,您现在应该看到类似以下内容的

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