Redis ERR Protocol error: invalid multibulk length

这篇具有很好参考价值的文章主要介绍了Redis ERR Protocol error: invalid multibulk length。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

异常信息 

org.springframework.data.redis.RedisConnectionFailureException: ERR Protocol error: invalid multibulk length; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: ERR Protocol error: invalid multibulk length


Caused by: redis.clients.jedis.exceptions.JedisConnectionException: ERR Protocol error: invalid multibulk length
	at redis.clients.jedis.Connection.sendCommand(Connection.java:138) ~[jedis-2.9.0.jar!/:?]
	at redis.clients.jedis.BinaryClient.del(BinaryClient.java:132) ~[jedis-2.9.0.jar!/:?]
	at redis.clients.jedis.BinaryJedis.del(BinaryJedis.java:291) ~[jedis-2.9.0.jar!/:?]
	at org.springframework.data.redis.connection.jedis.JedisKeyCommands.del(JedisKeyCommands.java:121) ~[spring-data-redis-2.1.9.RELEASE.jar!/:2.1.9.RELEASE]
	... 38 more
Caused by: java.net.SocketException: Broken pipe (Write failed)
	at java.net.SocketOutputStream.socketWrite0(Native Method) ~[?:1.8.0_111]
	at java.net.SocketOutputStream.socketWrite(SocketOutputStream.java:109) ~[?:1.8.0_111]
	at java.net.SocketOutputStream.write(SocketOutputStream.java:153) ~[?:1.8.0_111]
	at redis.clients.util.RedisOutputStream.flushBuffer(RedisOutputStream.java:52) ~[jedis-2.9.0.jar!/:?]
	at redis.clients.util.RedisOutputStream.write(RedisOutputStream.java:76) ~[jedis-2.9.0.jar!/:?]
	at redis.clients.util.RedisOutputStream.write(RedisOutputStream.java:66) ~[jedis-2.9.0.jar!/:?]
	at redis.clients.jedis.Protocol.sendCommand(Protocol.java:100) ~[jedis-2.9.0.jar!/:?]
	at redis.clients.jedis.Protocol.sendCommand(Protocol.java:84) ~[jedis-2.9.0.jar!/:?]
	at redis.clients.jedis.Connection.sendCommand(Connection.java:127) ~[jedis-2.9.0.jar!/:?]
	at redis.clients.jedis.BinaryClient.del(BinaryClient.java:132) ~[jedis-2.9.0.jar!/:?]
	at redis.clients.jedis.BinaryJedis.del(BinaryJedis.java:291) ~[jedis-2.9.0.jar!/:?]
	at org.springframework.data.redis.connection.jedis.JedisKeyCommands.del(JedisKeyCommands.java:121) ~[spring-data-redis-2.1.9.RELEASE.jar!/:2.1.9.RELEASE]
	... 38 more

报错原因: redis 执行条件过长 

错误代码: 


    /**
     * 批量删除
     * @param   prex为迷糊匹配的key,如cache:user:* 
     */
    public void redisDeleteByPrex(String prex) {
        Set<String> keys = redisTemplate.keys(prex);
        if (CollectionUtils.isNotEmpty(keys)) { 
        		redisTemplate.delete(keys); 
        }
    }

这里采用前匹配查询,获取到需要删除的数据超过 1M 所以报错

1M 这个结果来自  redis源码:

/* We know for sure there is a whole line since newline != NULL,
         * so go ahead and find out the multi bulk length. */
        redisAssertWithInfo(c,NULL,c->querybuf[0] == '*');
        ok = string2ll(c->querybuf+1,newline-(c->querybuf+1),&ll);
        if (!ok || ll > 1024*1024) {
            addReplyError(c,"Protocol error: invalid multibulk length");
            setProtocolError(c,pos);
            return REDIS_ERR;
        }

参考: https://blog.csdn.net/sinat_29843547/article/details/77512585

解决方案:

将查询结果分批处理 控制大小在1M内

修改代码如下:文章来源地址https://www.toymoban.com/news/detail-627924.html

    /**
     * 批量删除
     * @param   prex为迷糊匹配的key,如cache:user:* 
     */
    public void redisDeleteByPrex(String prex) {
        Set<String> keys = redisTemplate.keys(prex);
        if (CollectionUtils.isNotEmpty(keys)) {
        	List<String> list = new ArrayList<>(keys);
        	// 为防止查出的数据过大分批删除  一次10w
        	List<List<String>> splitList = CommonUtil.splitList(list, 100000);
        	for (List<String> list2 : splitList) {
        		redisTemplate.delete(list2);
			}
        }
    }

到了这里,关于Redis ERR Protocol error: invalid multibulk length的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ❤ error: RPC failed; curl 92 HTTP/2 stream 0 was not closed cleanly: PROTOCOL_ERROR (err 1)

    使用Git的时候今天突然遇到了问题 今天突然使用Mac报错: Git遇到一个问题,如标题 1.搜罗一大堆最终指向这是http2本身的bug。 1.(推荐)直接换掉Git的http版本 git config --global http.version HTTP/1.1 2.更改Git的http克隆为ssh,使用ssh进行提交和拉取代码 — 使用ssh连接Git操作指南(…更新

    2024年02月04日
    浏览(48)
  • 如何修复谷歌Chrome上的“该网站不能提供安全的连接”?或‘ERR_SSL_PROTOCOL_ERROR’问题

    本文是一篇介绍如何修复Chrome上的‘该网站不能提供安全的连接’或‘ERR_SSL_PROTOCOL_ERROR’问题的快速指南。 如果谷歌Chrome是你通向世界的互联网之窗,那么你肯定至少遇到过一次“该网站不能提供安全的连接”或“ERR_SSL_PROTOCOL_ERROR”提示信息。关于这个错误背后并没有什么

    2024年02月05日
    浏览(109)
  • Vue启用报错 RangeError: Invalid typed array length: -4095

    近期开发的前端项目 项目启用失败,记录下修复过程 RangeError: Invalid typed array length: -4095  错误原因:node版本问题,安装10.x.x 即可 重新安装: 1.将原来的nvm,node卸载 2.安装nvm  如果显示上面内容即安装成功 3. 在nvm上安装一个版本的 Node     命令:nvm ls 出现下图即安装成功

    2023年04月10日
    浏览(34)
  • net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content) 报错

    最近现场实施人员反馈有个功能不能正常使用,F12查看浏览器的控制台,提示net::ERR_CONTENT_LENGTH_MISMATCH 206 (Partial Content)的错误, HTTP状态码206表示“部分内容”(Partial Content),表示服务器成功处理了部分客户端的请求。通常情况下,这个状态码是在客户端通过HTTP Range头部请

    2023年04月25日
    浏览(35)
  • AES解密报错java.security.InvalidKeyException: Invalid AES key length: xx bytes

    由于与其它系统接口对接,需要进行加密处理。 对接系统采用AES加密方式,作为接收方获取加密内容,通过AES解密拿到数据。 解密过程中遇到报错如下: 出现此错误,主要原因是秘钥长度不符合要求所导致的。 AES允许128位,192位或256位密钥长度。 这也就意味着秘钥只能是

    2024年02月06日
    浏览(36)
  • pnpm 使用 workspace 报错 ERR_INVALID_THIS

    有时候真的感觉如果有一个老师指路,那么遇到的坑真的会少很多。 错误示例: 原因是什么?原因就是 pnpm 的 bug!把你的pnpm升级到 8.3.1 及以上。 github issue

    2024年04月22日
    浏览(28)
  • 深入剖析Tomcat之ERR_INVALID_HTTP_RESPONSE

    前段时间刚学完《Java网络编程》,最近着手学习《深入剖析Tomcat》,但是这里第一个案例就出现了问题。建议稍微有点网络基础的同学看。 书上源码多自己思考,根据已有知识排错。 基于可靠TCP建立连接。 发送请求、响应请求 断开连接 HTTP请求 请求: 请求方法、URI、协议

    2023年04月27日
    浏览(36)
  • AES解密报错Invalid AES key length: xx bytes与Given final block not properly padded的解决方法

    最近和其它系统联调接口,用到了Java的AES加解密。 由其它系统AES加密,本人的系统获取到加密报文后,AES解密,获取到内容。 本来是比较简单的,可是其它系统只提供了秘钥,没有提供解密方法,解密方法需要我们自己写…… 正常应该是加密方提供解密方法的吧,我觉得…

    2024年02月01日
    浏览(41)
  • 微信小程序真机调试报ERR_CERT_AUTHORITY_INVALID

    微信开发者工具中调试微信小程序,在开发工具里面调试没问题,但是真机调试的时候报ERR_CERT_AUTHORITY_INVALID错误 到这个站点 检查域名的Https证书的安全性 : 传送门(注:大部分都是证书链不完整.) 证书链补全工具传送门 使用新的证书替换原来使用的Https证书 至此应该就可以愉

    2024年02月14日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包