【问题标题】:Can I use Redis installed on Windows Subsystem for Linux with a python app in Windows?我可以将安装在适用于 Linux 的 Windows 子系统上的 Redis 与 Windows 中的 python 应用程序一起使用吗?
【发布时间】:2019-10-05 15:03:55
【问题描述】:

我想在 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 服务器交互。这可能吗?如果可以,我该如何确认连接?

【问题讨论】:

    标签: python redis windows-subsystem-for-linux


    【解决方案1】:

    是的,您可以从 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 会话中,您现在应该会看到如下内容:

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

    【讨论】:

      猜你喜欢
      • 2018-11-25
      • 2016-07-27
      • 2019-07-03
      • 1970-01-01
      • 2020-09-14
      • 2017-12-14
      • 2021-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多