>我在单个 Redis 实例上运行多个 celery 实例(阶段、开发、生产(。现在的问题是,芹菜是否使用pub/sub与redis进行交流?如果不是,是否可以通过使用不同的数据库编号来实现隔离级别?例如:
dev - redis://127.0.0.1:3366/0
stage - redis://127.0.0.1:3366/1
production - redis://127.0.0.1:3366/2
谢谢!
做什么,我永远不会让多个 Celery 实例使用相同的 Redis 数据库。如果多个 Celery 实例能够和谐地使用同一个 Redis 数据库,那就太好了。但是不知道未来的版本是否会有一个会造成严重破坏的错误。此外,如果您需要检查 Redis 端的情况,能够选择一个数据库编号并知道您将在此数据库中看到的任何内容都属于单个实例是非常方便的。
事实上,我已经从使用多个数据库转变为使用多个 Redis 实例。过去,Redis 开发人员一直在谈论删除对多个数据库的支持。我相信这个想法已经被搁置了,但是当讨论这个想法时,Redis开发人员指出运行多个Redis实例实际上并不昂贵。在使用多个实例的优势中,对我来说,决定性因素是,为开发启动的 Redis 实例与为生产启动的 Redis 实例具有相同的配置和管理需求。例如,可以随意删除我在开发实例中的数据。对于生产来说并非如此。(是的,它是一个缓存,生产数据将被重新填充,但我不想刷新整个缓存,除非别无选择。如果我决定要删除与开发相关的所有 Redis 数据,包括已保存到磁盘以持久化的任何数据,我可以轻而易举地完成,并且知道它不会影响生产。我不得不这样做几次,并且非常高兴有一个单独的 Redis 实例进行开发,使操作变得轻而易举。