ERR Protocol error: invalid multibulk length: Protocol error: invalid multibulk length
RedisЧто это значит?
Сервер Redis не смог разобрать поток байтов от клиента согласно RESP (Redis Serialization Protocol). Поскольку заявленное командой multibulk число элементов было недопустимым, соединение закрыто с ошибкой протокола.
Почему возникает?
Обычно вызвано тем, что клиент, не являющийся клиентом Redis (например, HTTP-запрос, приложение, подключённое не к тому порту), отправляет сырые данные на порт Redis, повреждённой/неполной клиентской библиотекой, ошибочным кадрированием в конвейере (pipeline) или огромными запросами, превышающими лимиты протокола (proto-max-bulk-len).
Как исправить
Убедитесь, что к порту Redis подключается только настоящий клиент Redis (без случайного трафика HTTP/других протоколов). Обновите клиентскую библиотеку и избегайте самописной/ручной генерации команд, нарушающей кадрирование RESP. Если отправляете очень большие значения, проверьте лимит proto-max-bulk-len и размер запроса. Убедитесь, что промежуточный прокси в сети не искажает данные.
Ещё по этой СУБД
- ERR wrong number of arguments for commandWrong number of arguments for command
- ERR Background save already in progressBackground save already in progress
- ERR bit offset is not an integer or out of rangeBit offset is not an integer or out of range
- ERR Number of keys can't be greater than number of argsEVAL/EVALSHA: numkeys exceeds argument count
- ERR WATCH inside MULTI is not allowedWATCH inside MULTI is not allowed
- ERR WAIT cannot be used with replica instancesWAIT cannot be used with replica instances
- ERR Background append only file rewriting already in progressAOF rewrite already in progress