TRYAGAIN Multiple keys request during rehashing of slot: Multiple keys request during rehashing of slot (cluster)
RedisЧто это значит?
В Redis Cluster во время перемещения хеш-слота между узлами (rehashing/resharding) был выполнен запрос с несколькими ключами одного слота, причём часть ключей уже была перемещена, а часть — нет. Сервер просит повторить операцию чуть позже.
Почему возникает?
Выполнение многоключевой команды (MGET, MSET, многоключевой Lua, транзакция) во время миграции слота. В мигрирующем слоте часть ключей находится на исходном узле, а часть — на целевом, поэтому команду невозможно выполнить атомарно.
Как исправить
Перехватывайте эту ошибку в клиенте и повторяйте после короткой паузы (TRYAGAIN временная; она исчезает по завершении resharding). Для многоключевых операций гарантируйте нахождение всех ключей в одном слоте с помощью hash tag, например {app_user123}.profile, {app_user123}.settings. Выполняйте ребалансировку кластера (resharding) в периоды низкого трафика.
Ещё по этой СУБД
- ERR MULTI calls can not be nestedMULTI calls can not be nested
- ERR Lua script attempted to access nonexistent global variableLua script attempted to access a nonexistent global variable
- ERR unknown commandUnknown command
- ERR DISCARD without MULTIDISCARD without MULTI
- BUSYGROUP Consumer Group name already existsConsumer group already exists
- NOGROUP No such key or consumer groupNo such key or consumer group in stream
- NOTBUSY No scripts in execution right nowNo scripts in execution right now