我想在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服务器进行交互。这可能吗,如果可以,如何确认连接?
答案 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服务-这就是我发现需要指定不同端口的方式;-)