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

问题描述 投票:0回答:1

我有一个在AWS上工作的Dockerized Celery,它使用来自AWS的ElastiCache(具有多节点的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.
amazon-web-services redis celery amazon-elasticache
1个回答
0
投票

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

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

更多信息herehere

© www.soinside.com 2019 - 2024. All rights reserved.