Python 芹菜:什么时候应该选择Redis作为消息代理而不是RabbitMQ?

Python 芹菜:什么时候应该选择Redis作为消息代理而不是RabbitMQ?,python,django,redis,rabbitmq,celery,Python,Django,Redis,Rabbitmq,Celery,我的粗略理解是,如果您需要内存中的键值存储功能,Redis会更好,但是我不确定这与分发任务有什么关系 这是否意味着,如果我们已经将Redis用于其他用途,我们应该将其用作消息代理?我最近(2017-2018年)使用了这两种工具,它们都是超级稳定的芹菜4。因此,您可以根据主机设置的详细信息进行选择 如果您必须使用芹菜版本2或版本3,请使用RabbitMQ。否则 如果您出于任何其他原因使用Redis,请使用Redis 如果您在AWS托管,请使用Redis,这样您就可以使用托管Redis as服务

我的粗略理解是,如果您需要内存中的键值存储功能,Redis会更好,但是我不确定这与分发任务有什么关系

这是否意味着,如果我们已经将Redis用于其他用途,我们应该将其用作消息代理?

我最近(2017-2018年)使用了这两种工具,它们都是超级稳定的芹菜4。因此,您可以根据主机设置的详细信息进行选择

  • 如果您必须使用芹菜版本2或版本3,请使用RabbitMQ。否则
  • 如果您出于任何其他原因使用Redis,请使用Redis
  • 如果您在AWS托管,请使用Redis,这样您就可以使用托管Redis as服务
  • 如果你讨厌复杂的安装,那就用Redis吧
  • 如果已经安装了RabbitMQ,请继续使用RabbitMQ
在过去,我会推荐RabbitMQ,因为它比Redis更稳定,更容易用芹菜安装,但我不相信这是真的


2019年更新


AWS现在有一个与RabbitMQ相当的托管服务,称为Amazon MQ,这可以减少在生产中作为服务运行的麻烦。如果您对此和芹菜有任何经验,请在下面进行评论。

Cellery明确建议您使用AMQP而不是Redis。我不会使用Redis。@Apero虽然Rabbitmq的支持时间比Redis长(并且是默认值),但两者都列为稳定。我看不出有明确的建议。不过,如果你看到了其他的情况,我会很好奇地阅读@DanilaGanchar文章提到:显然RabbitMQ需要Redis 75%的时间来添加消息,86%的时间来处理消息。为什么Redis更快?更新了文档中的代理链接:使用Redis/python 3.7/Celery 4.2的一个烦恼是结果后端无法工作,因为
async
现在是python的一部分(请参阅)--这应该用Celery 4.3解决。我不知道这是否也会影响RabbitMQ。不过,Celery 4.3现在已经发布,所以这不再是一个问题——results后端可以与Redis一起使用。您还可以将Celery与Amazon SQS一起使用,这非常易于部署和部署run@JasonGenX不过,SQS支持是实验性的。我想知道不稳定/缺失的位是什么…现在Amazon MQ除了activemq之外还提供rabbitmq代理,我已经使用了它,它工作得很好。