我可以在 Windows 服务器上运行 redis 吗?

Posted

技术标签:

【中文标题】我可以在 Windows 服务器上运行 redis 吗?【英文标题】:Can I run redis on a windows server? 【发布时间】:2020-12-11 12:32:14 【问题描述】:

我在 django 中设计了一个应用程序,使用带有 redis 服务器的 django 通道进行 websocket 通信,但我必须将它托管在 windows 服务器上。我可以在我的 Windows 机器上本地运行 redis 服务器,它可以很好地在我的本地主机上进行测试。我想知道我是否可以为 Windows 服务器做同样的事情。我可以以及如何为该应用程序运行 redis 服务器。有没有其他选择? 我发现的其他答案已经过时,并且是关于在本地机器上运行 redis。

我正在添加一些关于我如何使用我的 redis 服务器进行实时 websockets 通信的代码细节。

CHANNEL_LAYERS = 
    'default': 
        'BACKEND': 'channels_redis.core.RedisChannelLayer',
        'CONFIG': 
            "hosts": [('peaceful-dusk-14195.herokuapp.com', 6379), ('127.0.0.1', 6379)],
        ,
    ,

我已经为django安装了channels-redis模块来使用redis服务器的配置,正如django channels documentation的教程所教的那样。

现在,如果我在本地机器上运行 redis 服务器,这段代码可以完美运行。但是由于 redis 是一个基于 linux 的服务器,我在 Windows 服务器上托管它时遇到了问题。我已使用 src 文件夹中此代码中的 server.c 文件来运行我的 redis 服务器:Download Redis 6.0.9

我在我的适用于 Linux 的 Windows 子系统 (wsl) 中运行 C 程序,并且 redis 服务器变为活动状态。这是在我的测试环境中完成的。

现在我的问题是,我可以对托管应用程序的 Windows 服务器执行相同的操作吗?我是否必须重新配置服务器中的某些内容才能运行 redis 服务器,或者我可以直接运行 windows 服务器而不进行任何修改?

【问题讨论】:

我建议考虑使用 docker 来运行 reddis(对于本地开发人员),而对于 prod,您应该只在 linux 上运行它(包括通道,asyncIO python 子系统在 windows 上不稳定) 根据redis.io/topics/introduction,它不受 Windows 官方支持。我已经编译了官方资源并在我的开发机器上的 Windows Subsystem for Linux (WSL) 上启动了服务器。并在端口 6379(或任何您选择的)上完美地作为 Localhost 服务运行。但是,我不确定这对于生产环境是否是个好主意。 我正在为其开发应用程序的公司拥有用于所有应用程序部署的 Windows 服务器,因此,我还必须托管 Windows 服务器的应用程序。如果不是 redis,那么还有其他选项可以运行我的频道部分吗? WSL 是我用来在我的开发机器上测试我的应用程序的工具。 【参考方案1】:

据我所知,您可以使用 Redis for Windows 替代品,例如 Memurai。

它完全兼容 Redis。您可以在 Memurai 和 Redis 之间复制数据。

【讨论】:

以上是关于我可以在 Windows 服务器上运行 redis 吗?的主要内容,如果未能解决你的问题,请参考以下文章

redis作为windows服务运行

Windows上运行Redis

Windows上运行Redis

ServiceStack.Redis 使用教程

topshelf包装redis为windows服务

Redis数据库系列在windows上搭建redis集群(redis-cluster)