ioredis
ioredis copied to clipboard
Elasticache cluster "CROSSLOT keys in request don't hash to same slot "
Hello experts,
We're using AWS elasticache redis cluster to store query response of Apollo Graphql server v4. We're getting the following error.
Not sure what's causing this issue. Any inputs are highly appreciated.
Regards, Chandan
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.
- Group by slot - keys
- 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.
This is not Apollo Graphql issue.
It's about redis cluster mode.
For me by using {}
hash tag key patterns , the issue got solved.