AWS + Celery + ElastiCache(Redis 集群)错误:请求中的跨槽密钥不会哈希到同一槽



我有一个在AWS上工作的Dockerized Celery,它使用来自AWS的ElastiCache(具有多节点的Redis Cluster(作为消息代理,但我收到以下错误。

当我在本地机器上测试我的 Celery 工作线程时,它与单个节点 Redis 完全没问题。我应该如何解决这个问题?

[I 180518 18:54:20 mixins:224] Connected to redis://....use1.cache.amazonaws.com:6379//
[E 180518 18:54:20 events:123] Failed to capture events: 'CROSSSLOT Keys in request don't hash to the same slot', trying again in 1 seconds.

[E 180518 18:54:23 events:123] Failed to capture events: 'Command # 1 (LLEN celeryev....2d788) of pipeline caused error: MOVED 11904 10.0.x.xxx:6379', trying again in 1 seconds.

发生此错误的原因是密钥必须位于同一哈希槽中,而不仅仅是同一节点。要在分片 Redis(已启用集群模式(ElastiCache 集群中实现多键操作,必须将密钥散列到同一哈希槽。您可以使用哈希标记将密钥强制放入同一哈希槽。

我还建议检查您的应用程序是否支持使用集群模式的 Redis

更多信息在这里和这里

相关内容

  • 没有找到相关文章

最新更新