ioredis icon indicating copy to clipboard operation
ioredis copied to clipboard

Elasticache cluster "CROSSLOT keys in request don't hash to same slot "

Open chandank-nu opened this issue 1 year ago • 3 comments

Hello experts,

We're using AWS elasticache redis cluster to store query response of Apollo Graphql server v4. We're getting the following error.

image

Not sure what's causing this issue. Any inputs are highly appreciated.

Regards, Chandan

chandank-nu avatar Dec 14 '23 13:12 chandank-nu

Hi, I'm backend developer.

Reason

Multi-Key operation is limited in cluster mode

  • KEYS, SCAN
  • Pipeline || Multi (with multiple single command)
  • DEL, UNLINK
  • HMGET, HMSET

You're using MULTI operation with multiple s keys commands.

Redis cluster (Elasticache same) has 'slot' of the keys. So If you try to multi-key based operation using 'Multi'

It's possible of 'CROSSSLOT' issue.

Because redis specific node (member of cluster) don't have all slots you input the keys (keyv:faqc:..., ['namespace:keyv'])

Solution

I have an idea application-level approach.

  1. Group by slot - keys
  2. Delegates each command to specific master node which has 'slot'

You can refer to my article
how to resolve 'CROSS-SLOT' issue in redis cluster environment

There's example code I write.

milkcoke avatar Dec 17 '23 13:12 milkcoke

This is not Apollo Graphql issue.
It's about redis cluster mode.

milkcoke avatar Dec 17 '23 14:12 milkcoke

For me by using {} hash tag key patterns , the issue got solved.

SeyyedKhandon avatar Jun 10 '24 21:06 SeyyedKhandon