Py学习  »  Redis

我可以使用安装在Windows子系统Linux上的Redis和Windows中的python应用程序吗?

Extranomical • 6 年前 • 1920 次点击  

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

我已经在Windows10上启用了WindowsLinux子系统,并安装了Ubuntu和Redis,并启动了服务器。在Windows方面,我使用vscode编写python代码。如下图所示,在我的python代码中,我试图连接到本地主机上的redis:6379

from celery import Celery

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

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

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

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/34297
 
1920 次点击  
文章 [ 1 ]  |  最新文章 6 年前
thebjorn
Reply   •   1 楼
thebjorn    6 年前

是的,您可以从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安装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服务——这就是我发现需要指定不同端口的原因;-)