ERR Protocol error: invalid multibulk length: Protocol error: invalid multibulk length(协议错误:无效的 multibulk 长度)
Redis含义
Redis 服务器无法按照 RESP(Redis Serialization Protocol)解析来自客户端的字节流。由于 multibulk 命令声明的元素数量无效,连接因协议错误而被关闭。
原因
通常由非 Redis 客户端(例如 HTTP 请求、连错端口的应用)向 Redis 端口发送原始数据、损坏/不完整的客户端库、管道中的帧格式错误,或超过协议限制(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(EVAL/EVALSHA:numkeys 超过参数数量)
- ERR WATCH inside MULTI is not allowedWATCH inside MULTI is not allowed(不允许在 MULTI 中使用 WATCH)
- ERR WAIT cannot be used with replica instancesWAIT cannot be used with replica instances(WAIT 不能用于副本实例)
- ERR Background append only file rewriting already in progressAOF rewrite already in progress(AOF 重写已在进行中)