AWS + Celery + ElasticCache(Redis群集)错误:CROSSSLOT请求中的键不会哈希到同一个插槽

时间:2018-05-18 18:59:20

标签: amazon-web-services redis celery elastic-cache

我在AWS上有一个Dockerized Celery worke,并且它使用来自AWS的ElaticCache(带有多节点的Redis群集)作为消息代理,但我收到以下错误。

当我在我的本地机器上测试我的芹菜工人时,它与一个节点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.

1 个答案:

答案 0 :(得分:0)

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

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

更多信息herehere