提问者:小点点

AWSCelery ElastiCache(Redis Cluster)错误:请求中的CROSSSLOT键不会散列到同一插槽


我有一个Dockerize Celery在AWS,它使用AWS的ElastiCache(具有多节点的Redis集群)作为消息代理,但我得到以下错误。

当我在本地机器上测试我的Celery worker时,它与单个节点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个答案

匿名用户

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

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

更多信息在这里和这里