CROSSSLOT: CROSSSLOT: ключи в запросе не попадают в один и тот же слот
RedisЧто это значит?
В Redis Cluster использована команда с несколькими ключами (например, MGET, MSET, SUNION), но ключи попадают в разные hash slots. Операции с несколькими ключами требуют, чтобы все ключи находились в одном слоте.
Почему возникает?
В режиме кластера команды, обращающиеся сразу к нескольким ключам, вызываются с ключами, распределёнными по разным слотам. Ключи распределяются по разным узлам, поскольку не используют hash tag.
Как исправить
Используйте hash tag, чтобы поместить связанные ключи в один слот: закрепите часть имени ключа фигурными скобками (например, {user1}:profile и {user1}:settings попадают в один слот). Используйте команды с несколькими ключами только для ключей с одинаковым hash tag. В качестве альтернативы разбейте операции на команды с одним ключом.
Ещё по этой СУБД
- LOADINGLOADING: Redis загружает набор данных в память
- BUSYBUSY: Redis занят выполнением скрипта. Можно вызвать только SCRIPT KILL или SHUTDOWN NOSAVE
- MISCONFMISCONF: Redis настроен на сохранение снимков RDB, но сейчас не может сохранять данные на диск
- MOVEDMOVED slot ip:port (перенаправление в кластере)
- ASKASK slot ip:port (перенаправление в кластере)
- NOSCRIPTNOSCRIPT: подходящий скрипт не найден. Используйте EVAL
- EXECABORTEXECABORT: транзакция отменена из-за предыдущих ошибок